Una forma de hacerlo:
Código:
const
CM_CLOSE = WM_USER + 1;
type
TForm2 = class(TForm)
procedure FormCreate(Sender: TObject);
private
procedure CMClose(var Message: TMessage); message CM_CLOSE;
end;
implementation
procedure TForm2.CMClose(var Message: TMessage);
begin
ModalResult := mrOk;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
PostMessage(Handle, CM_CLOSE, 0, 0);
end;
PostMessage manda el mensaje pero sólo hasta que se procese el resto de mensajes, en este caso hasta que todos los mensajes necesarios para que el formulario termine de cargarse se procesen. Así, en el manejador del mensaje CM_CLOSE pones ya el valor deseado para ModalResult.
// Saludos