ShowModal?
Bis zum WaitFor kommt der dann ja nicht, falls nicht jemand vorher das Fenster schließt.
Wäre es da nicht andersrum besser?
Delphi-Quellcode:
var
LForm : TForm;
LThread : TThread;
begin
LForm := TSplashScreen.Create(nil);
try
LThread := TStartupThread.Create(LForm);
try
LForm.Show;
LThread.WaitFor;
LForm.Hide;
finally
LThread.Free;
end;
finally
LForm.Free;
end;
end;
// oder
var
LForm : TForm;
LThread : TThread;
begin
LThread := TStartupThread.Create;
try
LForm := TSplashScreen.Create(nil);
try
LForm.Show;
LThread.WaitFor;
finally
LForm.Free;
end;
finally
LThread.Free;
end;
end;
Wie schon erwähnt, müssen die
VCL-Komponenten im
Hauptthread VCL-Thread bleiben.
Man könnte zwar in anderen Threads direkt via
WinAPI Formulare nzeigen, aber diese müssen dann komplett in dem Thread erstellt, behandelt und freigegeben werden, inkl. eigener Message-Loop.