Naja eine Möglichkeit wäre es wenn du einen Ladedialog hättest, der sich erst schließt wenn das Formular halt alles erstellt hat und solange ist das Hauptformular halt unsichtbar.
Edit: Der genannte "Splashscreen"
Dann könntest du noch z.b. dem Fenster einen Initial-Zustand geben, den Cursor zur Sanduhr machen und die Zeichenfunktion des Formulars deaktivieren. Dann alles initialisieren und den Cursor, sowie die Zeichenfunktion wiederherstellen.
Zum Deaktivieren des Zeichenvorgang eines Formulars:
Delphi-Quellcode:
procedure LockWinControl(
const oWinControl: TWinControl );
begin
if Assigned ( oWinControl )
then
begin
// Handle erstellen, falls noch nicht vorhanden
oWinControl.HandleNeeded;
// Deaktivieren von Repaint
SendMessage( oWinControl.Handle, WM_SETREDRAW, 0, 0 );
end;
end;
procedure UnlockWinControl(
const oWinControl: TWinControl );
begin
if Assigned ( coWinControl )
then
begin
// Handle erstellen, falls noch nicht vorhanden
oWinControl.HandleNeeded;
// Aktivieren von Repaint
SendMessage( oWinControl.Handle, WM_SETREDRAW, 1, 0 );
// Repaint ausführen
RedrawWindow( oWinControl.Handle,
nil, 0, RDW_ERASE
or RDW_FRAME
or RDW_INVALIDATE
or RDW_ALLCHILDREN );
end;
end;
Oder natürlich die eleganteste Lösung wäre wohl Zustandshandling, wobei ich dazu irgendwie grad keinen Link finde...
MfG Alaitoc