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

Вниз

KOLEditBox : действия при потере фокуса.   Найти похожие ветки 

 
серый мЫш ©   (2005-04-09 04:12) [0]

Как можно Edit заставить что-то выполнить перед тем, как передать фокус другому элементу приложения?
  Я считал, что для этого нужно событие OnLeave, но, похоже, ошибся.


 
thaddy   (2005-04-09 08:52) [1]

You can trap WM_KILLFOCUS in an onmessage handler:

procedure NewForm1( var Result: PForm1; AParent: PControl );
begin
 New(Result,Create);
 with Result^ do
 begin
   Form:= NewForm(AParent,'KOLForm').SetSize(600,400).centeronparent.Tabulate;
   Applet:=Form;
   Edit:=Neweditbox(form,[]);
   Edit1:=Neweditbox(form,[]).placedown;
   Edit.OnMessage:=DoMessage;
   Form.Add2AutoFree(Result);
 end;
end;

function TForm1.DoMessage(var Msg:TMsg;var Rslt:integer):Boolean;
begin
 Result:=false;
 if msg.message = WM_KILLFOCUS then
  Edit.Caption := 'LostFocus' else
 if msg.message = WM_SETFOCUS then
  Edit.Caption:='HasFocus';
end;


 
thaddy   (2005-04-09 08:53) [2]

You can trap WM_KILLFOCUS in an onmessage handler:

procedure NewForm1( var Result: PForm1; AParent: PControl );
begin
 New(Result,Create);
 with Result^ do
 begin
   Form:= NewForm(AParent,'KOLForm').SetSize(600,400).centeronparent.Tabulate;
   Applet:=Form;
   Edit:=Neweditbox(form,[]);
   Edit1:=Neweditbox(form,[]).placedown;
   Edit.OnMessage:=DoMessage;
   Form.Add2AutoFree(Result);
 end;
end;

function TForm1.DoMessage(var Msg:TMsg;var Rslt:integer):Boolean;
begin
 Result:=false;
 if msg.message = WM_KILLFOCUS then
  Edit.Caption := 'LostFocus' else
 if msg.message = WM_SETFOCUS then
  Edit.Caption:='HasFocus';
end;


 
Владимир Кладов   (2005-04-09 13:19) [3]

вообще то OnLeave есть и он работает в KOL.


 
thaddy   (2005-04-09 17:59) [4]

Oversight... Sorry Vladimir! Your new MM improved already?


 
thaddy   (2005-04-09 17:59) [5]

Oversight... Sorry Vladimir! Your new MM improved already?


 
Владимир Кладов   (2005-04-09 22:15) [6]

I improved it and on first 3 tests it is faster then FastMM from the pack about 30% even without translating code to asm. But on 4th I get Out of memory, and on some other it loose sometimes 7 times (700%). So I decided stop this work for some time and return to collapse project. At least, FastMM3 seems working not bad. Thanks for a link.


 
серый мЫш ©   (2005-04-16 22:05) [7]

М-да... Я и забыл, что OnLeave уже в других случаях использовал и он работает :). Но проблема все равно есть, так как он работает не везде (как в моем случае). А может, это особенности операционной системы, с которыми я еще не ознакомился... В общем, проблема вот какая: есть Grid и есть control, с помощю которого осуществляется ввод данных в Grid. Так вот, этот контрол не имеет OnLeave, по крайней мере, если его пытаться создать стандартно (двойное нажатие на поле OnLeave на вкладке Events в Inspector Object).
    P.S.
    Я, конечно, нашел выход, но хотелось бы знать правильное решение. Так как control в моем случае невидимый, то я дожидался, пока он исчезнет и проводил нужные операции. Такой способ может не всегда пригодится, поэтому я и спросил здесь: как правильно?


 
thaddy   (2005-04-16 22:24) [8]

See my example above: use the focus messages



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

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

Наверх





Память: 0.46 MB
Время: 0.039 c
14-1132226125
dr Tr0jan
2005-11-17 14:15
2005.12.11
Кто помнит Basic?


14-1132655028
Dmitrij_K
2005-11-22 13:23
2005.12.11
SFTP


2-1132669419
Wolferio
2005-11-22 17:23
2005.12.11
ShellListView


1-1131810203
Nikos
2005-11-12 18:43
2005.12.11
Ошибка возведения числа в квадрат


2-1132535416
Exorcist
2005-11-21 04:10
2005.12.11
Как создать новый компонент на i-той вкладке PageControl





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский