Podrías intentar usar el evento OnShow aunque no siempre da los resultados esperados ya que si tu procedimiento toma tiempo, por ejemplo cargar una tabla de una base de datos, entonces el formulario se muestra pero algunos controles, principalmente las etiquetas, no aparecen sino hasta que termina el procedimiento.
Lo que yo hago en ocasiones es mandar un mensaje personalizado para que se ejecute después del OnShow:
Código:
const
CM_AFTERSHOW = WM_USER + 1;
type
TForm1 = class(TForm)
procedure FormShow(Sender: TObject);
private
procedure CMAfterShow(var Msg: TMessage); message CM_AFTERSHOW;
end;
implementation
procedure TForm1.FormShow(Sender: TObject);
begin
PostMessage(CM_AFTERSHOW);
end;
procedure TForm1.CMAfterShow(var Msg: TMessage);
begin
{ Aquí tu procedimiento }
end;
PostMessage manda el mensaje hasta
después de que termine de procesarse el evento de manera que al llegar a CMAfterShow en principio el formulario ya está mostrado.
// Saludos