Es ist und bleibt ne unsaubere Lösung!
Was ist die saubere Lösung? Der Timer?
Ich finde es sehr vermessen, alles, was nicht den eigenen Vorlieben entspricht, als unsauber zu deklarieren.
Auszug aus der Forms:
Code:
Show;
try
SendMessage(
Handle, CM_ACTIVATE, 0, 0);
ModalResult := 0;
repeat
Application.HandleMessage;
if Application.Terminated then ModalResult := mrCancel else
if ModalResult <> 0 then CloseModal;
until ModalResult <> 0;
Wie man sieht, wird nach allen Ereignissen (Show, Activate etc.) ModalResult auf 0 gesetzt.
Schliessen hier nicht möglich.
Das nächste ist HandleMessage - ProcessMessage und Idle.
Was ist nun unsauber daran, genau hier einzusteigen?
Sowohl Timer als auch PostMessage als auch Application.OnIdle kann man verwenden.
Ich persönlich bevorzuge weiterhin OnIdle, bezeichne die anderen Lösungen aber nicht gleich als unsauber.
Ich habe früher dafür auch einen Timer benutzt.
Aber man muss doch die Zeit gut wählen, damit er wirklich fertig ist (auch ProcessMessages braucht Zeit).
Den Fragesteller zu verunsichern, kann ja nicht das Ziel sein.
Frank