Einzelnen Beitrag anzeigen

Benutzerbild von Gausi
Gausi
Online

Registriert seit: 17. Jul 2005
880 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Timer wird Blockiert

  Alt 28. Jun 2019, 11:22
Wenn die Ausführung der Aktion der MainForm unterbrochen werden soll/muss, bis der Timer abgelaufen ist bzw. die Progressform geschlossen wurde, dann könnte das mit ShowModal gehen.

Also so:

Delphi-Quellcode:
// in MainForm
procedure DoSomething;
begin
  foo; // machwas
  ProgressForm.ShowModal; // Anzeige der ProgressForm und warten
  bar; // mach noch was
end;

// ProgressForm
procedure TFormFtpprogress.FormShow(Sender: TObject);
begin
   progressTimer.Enabled := true;
end;

procedure TFormFtpprogress.progressTimerTimer(Sender: TObject);
begin
   progressTimer.Enabled := false;
   // ggf. ModalResult := ... zur Rückgabe eines Wertes an MainForm
   Close; // ProgressForm schließen
end;
Alternativ in der Schleife in deinem ersten Posting ein Application.ProcessMessages einbauen. Aber dann wird es unter Umständen hakelig mit der GUI. Denn dann musst du sicherstellen, dass der User zwischendurch nichts "gefährliches" anklicken darf.
The angels have the phone box.
  Mit Zitat antworten Zitat