Здравствуйте, DarkMaster, Вы писали:
AC>>>Требуется "внутри" некоторого компонента поймать момент,
S>>Если компонент оконный, можно при создании посылать ему сообщение.
S>>S>>procedure TMyComponent.AfterConstruction;
S>>begin
S>> inherited;
S>> PostMessage(Handle, WM_AFTER_CREATION, 0, 0);
S>>end;
S>>
Да, я ошибся. Не взлетит.
DM>Это сообщение будет послано после создания этого компонента на форме, а не всей формы
Разумеется.
DM>(в принципе если он последний в списке создания — тогда может быть). К тому же PostMessage() поставит сообщение в очередь и вернется.
Разумеется.
DM>Так что нет гарантии, что WM_AFTER_CREATION будет пойман/обработан именно в момент между Create и Show.
Объясняю. Почему-то я решил, что TForm.Show тоже позовёт PostMessage(), то есть сам
показ формы будет асинхронным.
Если бы это было так, то сообщение, положенное в очередь раньше (WM_AFTER_CREATION) гарантированно отработало бы раньше.
Однако, TForm.Show на самом деле зовёт Perform, то есть вызов синхронный. В силу этого, TForm.Show
произойдёт раньше, чем обработчик WM_AFTER_CREATION. Факт. Признаю свою ошибку.
Топикстартеру мои извинения.