Hola a todos, una posible solución podría ser el uso de un timer, claro habría que hacer un balance del uso de los recursos entre las soluciones propuestas ya que todas 'consumen' recursos en mayor o menor medida.
Con el uso del timer se puede usar tanto el OnCreate como el OnShow y sería ajustar enabled a false, y poner el tiempo adecuado. Quedaría mas o menos así:
Código:
procedure TForm1.FormShow(Sender: TObject);
begin
if condicion then Timer1.Enabled:=true;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled:=false;
Showmessage('Hola cadetill');
end;
Quizas no sea lo óptima pero es sencilla y funciona.
Saludos