Форум: "WinAPI";
Текущий архив: 2009.10.25;
Скачать: [xml.tar.bz2];
ВнизНе происходит сообщения WM_SETFOCUS,WM_KILLFOCUS Найти похожие ветки
← →
Vlad Oshin © (2008-09-04 15:03) [0]Есть форма, на ней есть эдиты
есть ApplicationEvents1: TApplicationEvents;
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
begin
case MSG.message of
WM_SETFOCUS,WM_KILLFOCUS:
begin
memo1.Lines.Add("aaaaaaaaaaa");
end;
end;//case MSG.message of
end;
WM_KILLFOCUS Окно потеряло фокус ввода от клавиатуры
WM_SETFOCUS Окно получило фокус ввода от клавиатуры
Ничего не происходит, как бы не скакал по Editam
хоть с помощью мышки, хоть Tab, хоть переключившись туда-назад в другое приложение.
Почему?
← →
Palladin © (2008-09-04 15:30) [1]У Edit"ов своя очередь сообщений и Application здесь ни причем. Если хочешь ловить сообщения для Edit"ов см. TControl.WindowProc (+ F1)
← →
Vlad Oshin © (2008-09-04 15:39) [2]но клики по ним отлавливаются
WM_LBUTTONDOWN,WM_RBUTTONDOWN:
begin
memo1.Lines.Add("dasfafadf" );
end;
и WM_CHAR тоже ловится
может не все сообщения, на самом деле передаются..
А WindowProc мало интереса переписывать,
в том и дело, что это ApplicationEvents1Message последний рубеж
Не могу я для всех(в том числе еще не написанных) форм Оконную процедуру менять
← →
Leonid Troyanovsky © (2008-09-04 15:51) [3]
> Vlad Oshin © (04.09.08 15:39) [2]
> Не могу я для всех(в том числе еще не написанных) форм Оконную
> процедуру менять
Менять надо не формам, а TEdit. Напиши потомка, поменяй WndProc.
А, во-ще, Screen.OnActiveControlChange.
--
Regards, LVT.
← →
Vlad Oshin © (2008-09-04 16:39) [4]
> Менять надо не формам, а TEdit.
да это понятно, но и им не могу. Их вообще не я могу писать
Screen.OnActiveControlChange
кстати, да, как же забыл.. Спасибо. Надо проверить как это будет в dll
← →
Palladin © (2008-09-04 16:45) [5]Что именно не ты им можешь писать? TControl.WindowProc это вообще-то свойство, а не метод. F1 то нажимал? Простой обход по компонентам с заменой свойства и ничего более.
← →
Vlad Oshin © (2008-09-04 17:01) [6]понял, спасибо
но по другому уже начал делать
← →
Leonid Troyanovsky © (2008-09-04 17:31) [7]
> Vlad Oshin © (04.09.08 16:39) [4]
> кстати, да, как же забыл.. Спасибо. Надо проверить как это
> будет в dll
Никак, если не передать из приложения Screen.
И, во-ще, объекты в длл - MD.
--
Regards, LVT.
← →
Vlad Oshin © (2008-09-04 18:00) [8]
> Никак, если не передать из приложения Screen.
передаю, передаю..application, screen
> объекты в длл - MD
ну а как же?
Вот есть приложение, 13 метров с пакетами если.
Надо написать еще одну функцию, возможность выбрать чего-то из сиска(DbGrid).
пишем dll, втыкаем туда форму, подписываемся на сообщение от осн.программы(которая и знать не знает о всех своих dll) об установлении ею коннекта с БД, получаем хендл соединения, делаем запрос, отображаем список.
Выбранный id отсылаем сообщением в программу, которая отсылает сообщение (ничего не зная о том что оно обозначает!) всем своим формам.
Кто подписан на это сообщение - тот извлекает из него id, работает как надо.
dll - 50кб
все - 13 метров
Разослать нужно ~ 2000 мест только в Москве,
еще Питер, Саратов, ННовгород..
И как?
← →
Leonid Troyanovsky © (2008-09-04 18:16) [9]
> Vlad Oshin © (04.09.08 18:00) [8]
> И как?
Например, длл без объектов, тот же самый хук на
WM_SETFOCUS,WM_KILLFOCUS or/and subclassing.
Словом, то, на что длл заточена.
Или не длл, а bpl or ocx.
--
Regards, LVT.
← →
Игорь Шевченко © (2008-09-05 09:54) [10]Application.OnMessage ловит только сообщения, посланные через PostMessage, а эти сообщения (WM_SETFOCUS, WM_KILLFOCUS) посылаются через SendMessage
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2009.10.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.053 c