Ver Mensaje Individual
  #9  
Antiguo 30-01-2007
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Reputación: 23
Crandel Va por buen camino
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  // solo verificamos
     if Screen.ActiveForm.Tag <> 1 then
     begin
       Screen.ActiveForm.Tag:=1;  // de esta forma sabemos si ya se creo o no
       .....  // todo tu codigo
    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.
__________________
[Crandel]
Responder Con Cita