Ich komme mir selbst blöde vor, aber wie löst man folgende Aufgabe geradlinig:
Ich möchte eine TForm modal öffnen, dann dort SOFORT bestimmte Operationen (Datanbankzugriffe) ausführen, währenddessen den Fortschritt anzeigen und DANACH das modale Fenster auch gleich wieder selbst schließen.
Code:
TFormProgress.Show(Sender: TObject);
begin
ShowMessage('start');
// here some time-consiming operations
Close; // ModalResult := mrOK;
ShowMessage('after close');
end;
Beide ShowMessage werden ausgeführt, bevor das Fenster zu sehen ist und dann bleibt es sichtbar und schließt nicht. "Close" wird also ignoriert (ModalResult auch).
Wo plaziert man idealerweise Code, der beim Öffnen des modalen Fensters gleich ausgeführt werden soll, aber eben erst NACHDEM das Fenster sichtbar ist?
Wie kann man ein modales Fenster in diesem Falle wieder selbst schließen, sobald fertig?
OnPaint kann ich nicht verwenden, weil sich das Fenster für die Fortschrittsanzeige häufig neu zeichnet.
Ich hätte wirklich gerne ein modales Fenster, damit die Fertigstellung abgewartet werden muss.
Vielen Dank im voraus!