Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.31;
Скачать: CL | DM;

Вниз

Как отловить момент после создания новой формы?   Найти похожие ветки 

 
Arc   (2005-07-11 00:07) [0]

Форма создается динамически,
например что-нить типа:
with TSomeForm.Create(Application) do
begin
  .....

end;

В моем компоненте нужно кое-что сделать со всеми динамически создающимися формами, после их Create, или после их Show, не важно.
С формами создающимися при запуске приложения, проблем нет

 for n := 0 to Application.ComponentCount - 1 do
   if Application.Components[n] is TForm then
     (Application.Components[n] as TForm).SomeProperty := SomeValue;

А как быть с динамическими формами? Как мне отловить это событие?

PS. Вносить какой-либо дополнительный код в формы я не хочу. Компонент должен работать с уже созданными проектами.


 
Anatoly Podgoretsky ©   (2005-07-11 00:15) [1]

begin эта самая точка и есть.


 
Юрий Зотов ©   (2005-07-11 00:26) [2]

В конструкторе компонента ставим локальный хук, в нем отлавливаем WM_CREATE, получаем ссылку на дельфишный объект через FindControl, проверяем его класс - и если это форма, то выполняем с ней нужные действия. В деструкторе компонента хук снимается.

Поскольку такой компонент нужен всего один на весь проект, лучше сделать его в виде синглтона (перекрыв NewInstance и FreeInstance).


 
Arc   (2005-07-11 00:32) [3]

begin эта самая точка и есть.

:) Я знаю, но вот как раз там-то я и не хочу ничего изменять и как раз для того чтобы там ничего не изменять мне и нужен этот класс.

Вносить какой-либо дополнительный код в формы я не хочу. Компонент должен работать с уже созданными проектами.

Конечно я бы мог сделать наследника от TForm, в котором на OnCreate выполнял бы нужный мне код, но я не хочу переписывать ВСЕ динамические формы встречающиеся в моих проектах.


 
Arc   (2005-07-11 00:41) [4]

В конструкторе компонента ставим локальный хук, в нем отлавливаем WM_CREATE
Мда... а я пытался повсится на Application.OnMessage, но WM_CREATE до туда не доходит...

Хук значит. Никогда не делал, можно ссылочку, где об этом почитать можно


 
Arc   (2005-07-11 00:56) [5]

О SetWindowsHookEx написано в хелпе. Вопрос исчерпан.



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

Текущий архив: 2005.07.31;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.061 c
1-1121088780
im-13
2005-07-11 17:33
2005.07.31
ошибка i/o при работе с браузером на delphi


1-1121150585
Demidoff
2005-07-12 10:43
2005.07.31
Есть ли компонент аналогичный кнопочке "обзор"?


6-1113827513
balamutik
2005-04-18 16:31
2005.07.31
Скачивание с мэйла


14-1120728878
IceBeerg
2005-07-07 13:34
2005.07.31
Антивирус NOD32 кто, что может сказать?


14-1121063066
Ломброзо
2005-07-11 10:24
2005.07.31
Наводит на размышления