Einzelnen Beitrag anzeigen

HJay

Registriert seit: 7. Dez 2009
172 Beiträge
 
Delphi XE7 Enterprise
 
#1

ShowModal mit Programmablauf und selbst schließen?

  Alt 10. Mär 2011, 11:25
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!
  Mit Zitat antworten Zitat