Ejecutar algo después de mostrar el formulario

5263 vistas

Imaginemos que queremos ejecutar algo de código (por ejemplo mostrar un mensaje) pero queremos hacerlo justo después de mostrar el formulario. En un primer momento podemos pensar de hacerlo en el OnShow, pero claro, la pantalla aun no se ha mostrado. ¿Cómo lo solucionamos? Pues creando nuestro propio mensaje.

Primero tendremos que definir la constante del mensaje



delphi
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows,....;
  7.  
  8. const
  9.   CM_AFTERSHOW = WM_USER + 84;



Ahora tenemos que definir el manejador del menaje



delphi
  1. type
  2.   TForm1 = class(TForm)
  3.     ........
  4.   private
  5.     procedure CMAfterShow(var Msg: TMessage); message CM_AFTERSHOW;



Y por supuesto la implementación del mismo



delphi
  1. procedure TForm1.CMAfterShow(var Msg: TMessage);
  2. begin
  3.   ShowMessage('el form ya está visible');
  4. end;



Ahora sólo nos queda poner el mensaje definido mediante PostMessage. Esto será lo último que haremos en el OnShow del formulario



delphi
  1. procedure TForm1.FormShow(Sender: TObject);
  2. begin
  3.   ........
  4.  
  5.   PostMessage(Handle, CM_AFTERSHOW, 0, 0);
  6. end;