Hi zusammen,
ich hoffe, hier reicht ein kleine Hilfe.
Folgende Situation
VCL 64bit Windows
Das Delphi Main Formular soll (erstnmal) ohne Funktion im Hintergrund sein.
Ich möchte ein weiteres Formular sofort nach dem Start öffnen und AKTIV haben.
Ich sehe das, weil die FensterTitelBar im inaktiven Zustand eine andere Farbe hat und sich leider einige Komponenten erst bei Aktivierung korrekt zeichnen.
DPR-Quelltext:
Erzeugen, Anzeigen Splash
Create Delphi-Mainform (frmDesktop)
Delphi-Quellcode:
Application.Initialize;
Application.MainFormOnTaskbar := True;
//Application.MainFormOnTaskbar := False;
frmSplash := TfrmSplash.Create(nil);
frmSplash.Show;
Application.CreateForm(TfrmDesktop, frmDesktop);
Application.Run;
Dann in der frmDesktop:
Da ich den Splashscreen solange stehen haben möchte, bis wirklich alles fertig ist, habe ich die das ApplicationIdleEvent genutzt.
Dort erzeuge ich dann die eigentlichen Mainform und möchte sie anzeigen/aktivieren
Delphi-Quellcode:
procedure TfrmDesktop.ApplicationEventsIdle(Sender: TObject; var Done: Boolean);
begin
if frmSplash <> nil then begin
SystemInit;
FfrmMain := TfrmMain.Create( self);
FfrmMain.Init;
FfrmMain.Show;
FfrmMain.SetFocus;
FfrmMain.btnHomeClick(nil);
FreeAndNil( frmSplash);
// FfrmMain.btnHomeClick(nil);
// SetForegroundWindow( FfrmMain.Handle);
// FfrmMain.SetFocus;
end;
Ihr seht, das ich hier schon einiges ausprobiert habe.
Das Fenster erscheint (im Vollbildmodus), ist aber nicht aktiv. Erst wenn ich dann manuell mit der Maus klicke, wird das Fenster aktiviert. (Sichtbar durch Anpassung der FensterTitelFarbe)
Was mache ich falsch? Wie geht es besser?
Gruß
Thomas