Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2007.04.22;
Скачать: [xml.tar.bz2];

Вниз

OnFocus для EditBox   Найти похожие ветки 

 
Александра   (2006-08-06 22:17) [0]

Привет, мальчики.

А есть ли аналог сабжа в KOL?


 
mdw ©   (2006-08-07 10:06) [1]

Есть аналог: OnLeave


 
MTsv DN ©   (2006-08-07 16:09) [2]

> OnLeave
Не думаю, что Александра имела ввиду наведение мыши...скорее фокусировку для ввода инфы в EditBox...

> А есть ли аналог сабжа в KOL?
В OnMessage обрабатывать WM_SETFOCUS или EN_SETFOCUS. Это перехват фокуса с клавы и OnClick с мыши...

С Уважением MTsv DN


 
mdw ©   (2006-08-07 18:36) [3]

OnEnter\OnLeave это именно получение\потеря фокуса

наведение мыши - OnMouseEnter\OnMouseLeave


 
mdw ©   (2006-08-07 18:41) [4]

Давно VCL не пользовал, сейчас посмотрел, а что такое OnFocus?

Может SetFocus? тогда  Focused:= True;

В общем, уточните вопрос.


 
Александра   (2006-08-07 22:11) [5]

Да, да.

Ну уже ответили на вопрос. Спасибо.


 
Александра   (2006-08-11 09:42) [6]

Хм, что-то не отлавливается в OnMessage ни одно сообщение. Что-то не понятно. Ладно, будем копать дальше.


 
Александра   (2006-08-11 21:38) [7]

Что я делаю не так:

function TEditFrm.SysBoxMessage(var Msg: tagMSG;
 var Rslt: Integer): Boolean;
begin
result := false;

case msg.message of

WM_SETFOCUS or EN_SETFOCUS :

 begin
  result := true;   //не попадаем сюда
   ....
 end;

WM_KILLFOCUS or EN_KILLFOCUS :

 begin
  result := true;  //и сюда тоже
    .....
 end;

end;
end;


 
MTsv DN ©   (2006-08-12 08:59) [8]

Привет...

Да... Ситуация интересная...
Вот описание из MSDN"а для EN_SETFOCUS:
The EN_SETFOCUS notification message is sent when an edit control receives the keyboard focus. The parent window of the edit control receives this notification message through a WM_COMMAND message.

В итоге, отлавливается-то EN_SETFOCUS отлавливается, но только когда фокус теряется 8( а не когда получает...

Вот код отслеживания сообщений, поступающих на EditBox...
function TMainForm.EditBoxMessage(var Msg: tagMSG; var Rslt: Integer): Boolean;
begin
Result := false;
lb.Add("$"+Int2Hex(Msg.message, 4));
if Msg.message = EN_SETFOCUS then
 begin
  MsgOK("");
 end;
end;

Кто-нибудь может прокомментировать такое поведение EN_SETFOCUS???

P.S. Что за сообщения $B005 и $BD33???


 
MTsv DN ©   (2006-08-12 09:08) [9]

2 Александра
> OnEnter\OnLeave это именно получение\потеря фокуса
Обрати внимание на OnEnter... Это как раз твой OnFocus...обработчик EN_SETFOCUS!!!

Хотя ситуация с перехватом EN_SETFOCUS меня все также интересует...

С Уважением MTsv DN


 
MTsv DN ©   (2006-08-12 09:21) [10]

> P.S. Что за сообщения $B005 и $BD33???

$B005
 CM_BASE = $B000
 CM_DIALOGKEY = CM_BASE + 5 = $B005
$BD33
 CN_BASE = $BC00
 WM_CTLCOLOREDIT = $0133
 CN_CTLCOLOREDIT = CN_BASE + WM_CTLCOLOREDIT = $BD33

С Уважением MTsv DN


 
Александра   (2006-08-12 18:11) [11]

OnEnter\OnLeave работает, а msg.message нет.

Правда при открытии проекта возникает ошибка "A call to an OS function failed" Может из-за этого?


 
MTsv DN ©   (2006-08-13 07:58) [12]

>OnEnter\OnLeave работает, а msg.message нет.
>
> Правда при открытии проекта возникает ошибка "A call to an OS function failed" Может из-за этого?

Как-то витиевато выразилась ;)

Если ты о том, что msg.message=EN_SETFOCUS не отлавливается, из-за ошибки, то это не так...у меня ошибки нет, а EN_SETFOCUS не отлавливается...
А если ошибка появилась после использования OnEnter\OnLeave, то это где-то у тебя "косяк"... Возможно необходим Ребилд KOL"а...

С Уважением MTsv DN


 
ANTPro ©   (2006-08-13 10:03) [13]

MTsv DN ©   (13.08.06 7:58) [12]
EN_SETFOCUS не отлавливается...

При вводе текста срабатывает без проблем.


 
Александра   (2006-08-13 13:31) [14]

Да вообще ни одно сообщение не отлавливается. От KOLForm ловится. Голова сломается от таких фокусов.


 
ANTPro ©   (2006-08-13 13:38) [15]

Александра   (13.08.06 13:31) [14]
Давай код: посмотрим, что Delphi7 скажет по этому поводу :)


 
MTsv DN ©   (2006-08-13 18:53) [16]

2 Александра
Вот перехват фокус с клавиатуры:
function TForm1.EditBox1Message(var Msg: tagMSG; var Rslt: Integer): Boolean;
begin
Result := false;
if (Msg.message = WM_KEYUP) then
 if (Msg.wParam = 9) or (Msg.wParam = 38) or (Msg.wParam = 40)  then
  Beep(400, 10);
end;

Для получения фокуса EditBox"f с клавы, ты жмешь, а потом отпускаешь кнопку Tab для Tabulate и Tab/Стрелка "->"/Стрелка "<-" для TabulateEx... Вот отлавливай и фильтруй сообщение WM_KEYUP и коды клавиш Msg.wParam...

С Уважением MTsv DN


 
Александра   (2006-08-16 10:24) [17]

Код в [7]


 
MTsv DN ©   (2006-08-16 13:30) [18]

> Код в [7]Ну и что...
Александра, посмотри внимательнее код какой я привел... Что перехватываю, что фильтрую... Если уж совсем, рабочий код:
function TForm1.EditBox1Message(var Msg: tagMSG; var Rslt: Integer): Boolean;
begin
Result := false;
if (Msg.message = WM_KEYUP) then //Отлов отжатие клавиши
 begin
  if (Msg.wParam = 9) then             //Фильтр Tab,
   if Form1.Form.Tabulate then        //если Tabulate = true
    Beep(400, 10);                        //Твое действие
  if (Msg.wParam = 9) or                //Фильтр Tab и стрелок "Влево", "Вправо",
     (Msg.wParam = 38) or
     (Msg.wParam = 40) then
      if Form1.Form.TabulateEx then  //если TabulateEx = true
       Beep(400, 10);                     //Твое действие
 end;
end;


С Уважением MTsv DN


 
Александра   (2006-08-19 00:42) [19]

Так а чего мне кнопки. Мне мышу надо ловить. А editbox"s у меня на kolpanel - табуляция переползает сразу на кнопки, расположенные прямо на форме. Чего не делаешь - ничего не помогает. Слетает и всё тут.


 
parovoZZ ©   (2006-08-20 01:21) [20]

Может из-за KolPanel такое происходит? Вернее ничего не происходит.


 
Александра   (2006-08-20 23:16) [21]

Хм, что интересно. Стоило только убрать or, как всё заработало:

WM_SETFOCUS :

 begin
  result := true;
  //
 end;


К чему бы это?


 
Александра   (2006-08-20 23:29) [22]

Но при варианте [21] не мигает курсор в EditBox. :(


 
ANTPro ©   (2006-08-21 20:02) [23]

Александра   (20.08.06 23:29) [22]
А что надо получить в итоге?
Если отлеживание потери/получения фокуса, то OnLeave/OnEnter (на kolpanel тоже работает проверял).



Страницы: 1 вся ветка

Форум: "KOL";
Текущий архив: 2007.04.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.087 c
2-1175610981
Alex_C
2007-04-03 18:36
2007.04.22
Ширина колонки в StringGrid


2-1175339108
Xmen
2007-03-31 15:05
2007.04.22
QuickReport


1-1172494427
Unknown user
2007-02-26 15:53
2007.04.22
Как БЫСТРО подсчитать кол-во файлов в заданном каталоге?


15-1174664197
Alekc
2007-03-23 18:36
2007.04.22
bluetooth и сервисы


3-1170068890
AlexXXX
2007-01-29 14:08
2007.04.22
сохранение в БД символов "&amp;#163;" и других....





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский