Mach's doch so:
Delphi-Quellcode:
var
...
frmWait: TfrmWarten;
begin
frmWait:=TfrmWarten.Create(nil);
try
//frmWait.FormStyle:=fsStayOnTop; // lieber nicht-das ist zu "agressiv" für den Benutzer
frmWait.ShowMarqueeBar(True);
frmWait.Show;
//Aktionen, die viel Zeit brauchen
frmWait.AddMessage('Datenbank wird überprüft...');
... // arbeiten
frmWait.AddMessage('Index neu anlegen...');
...
frmWait.AddMessage('Fertig');
frmWait.Finish;
finally
frmWait.Free;
end;
end;
Die Methode AddMessage() ruft intern immer auch noch
BringToFront auf, damit das "Warten"-Formular nicht permanent hinter dem Hautpformular verschwindet.
Die Methode Finish sieht so aus:
Delphi-Quellcode:
procedure TfrmWarten.Finish;
begin
PlaySound('RingIn', 0, SND_ALIAS);
Cursor := crDefault;
Hide;
BtnClose.Visible := True; // Schliesen-Button einblenden
ShowModal;
end;
Somit muss der Benutzer das Fenster zum Schluss schliesen.
Grund: er soll die Gelegenheit haben die Meldungen zu lesen.