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.