Hallo,
die Variante mit dem Show hat den Nachteil,
dass mit dem darunterliegenden Form auch noch gearbeitet werden kann,
Hide versteckt, OK, sieht aber manchmal doof aus
Deswegen mein Ansatz mit dem "semimodal".
Nochmal der Code.
Delphi-Quellcode:
function TForm_PEP__Main.LoadData: Boolean;
var
FrmStatus : TForm_Status;
WindowList : Pointer;
begin
Result:= False;
try
FrmStatus:= TForm_Status.Create(NIL);
try
{ to make form "semimodal" }
WindowList:= DisableTaskWindows(frmStatus.Handle);
try
// Formular anzeigen
FrmStatus.Show;
// Schleifenverarbeitung
Repeat
FrmStatus.Caption := 'Lade Daten';
FrmStatus.Label1.Caption:= 'Daten 1';
// Nachrichtenverarbeitung zulassen
Application.ProcessMessages;
// hier passiert das wichtige Daten 1
FrmStatus.Label1.Caption:= 'Daten 2';
// Nachrichtenverarbeitung zulassen
Application.ProcessMessages;
// hier passiert das wichtige Daten 2
break;
// bis Verarbeitung fertig oder Benutzerabbruch
until False;
finally
// Semi-Modalität aufheben
EnableTaskWindows(WindowList);
// Fenster verstecken
FrmStatus.Hide;
end;
finally
// Fenster wieder freigeben
FrmStatus.Free;
end;
except
end;
end; { LoadData }
Definiere eine Form (TForm_Status).
Packe, wenn du willst ein Label drauf (Label 1).
Und dann in deinem Form (hier TForm_PEP__Main), den obigen Code.
Heiko