En realidad yo tambien estaba necesitando algo similar.
Otra alternativa de la que comenta Lepe es usar el evento OnActiveFormChange de la clase TScreen y verificas que el control sea un TForm.
El problema es que estas capturando el evento Active y no el verdadero create, pero te muestro como parchearlo.
igualmente te dejo un poco de codigo:
en el Form Create de tu MainForm escribes (tambien puede ser otro lado)
Código Delphi
[-]
procedure TMainForm.FormCreate(Sender: TObject);
begin
Screen.OnActiveFormChange := FormActiveFormChange;
end;
donde FormActiveFormChange es el nombre de tu metodo.
Luego:
Código Delphi
[-]Procedure TMainForm.FormActiveFormChange(Sender:TObject);
Begin
if (Screen.ActiveForm is TForm) then if Screen.ActiveForm.Tag <> 1 then
begin
Screen.ActiveForm.Tag:=1; ..... end;
end;
igualmente si alguien sabe de otro metodo mejor que comente.
Estuve realizando algunas pruebas intentando capturar el mensaje de windows
WM_CREATE, pero al parecer este solo lo envia a la ventana que se esta creando.
Tambien probe con
Application.OnMessage, pero envia casi todos los mensajes menos
WM_CREATE, en realidad en la ayuda lo avisaba.
No se cual otra queda
. Seguro que capturando otro mensaje de windows, pero todavia no encontre cual.