Hallo,
mal wieder eine Taskbar-Frage da ich leider nichts passendes finde
Ich habe ein Objekt das über eine Methode ein Formular erstellt und dieses Modal anzeigt.
Dieses Formular soll das einzige Formular der Anwendung sein, wenn möglich also das MainForm. Nach dem Schließen des Formulars soll die Anwendung sich schließen.
Der Programmablauf ist also in etwa
Objekt erzeugen
mit dem Objekt was machen
irgendwann das Formular des Objektes modal anzeigen
Programm beenden
Dafür habe ich zunächst den ganzen Application.Inizialize/Run... Kram etc aus der Hauptunit entfernt und arbeite dort lediglich mit meinem Objekt. Mein Problem ist nur, dass wenn ich das Formular minimiere es nicht auf der Taskbar liegt, sondern darüber. Einen Taskbareintrag gibt es allerdings durchgehend auch.
Nächste Idee war Ein Dummy Formular als Mainform zu erzeugen und mein Objekt im OnCreate des Dummys zu erzeugen:
Delphi-Quellcode:
Application.Initialize;
Application.Title := 'Meine App';
Application.CreateForm(TAppMainForm, AppMainForm);
Application.ShowMainForm:=false;
Application.Run;
//----------------
procedure TAppMainForm.FormCreate(Sender: TObject);
var MyObject:TMyObject;
begin
[..]
MyObject.ShowForm; // Modales anzeigen intern
freeandnil(MyObject);
PostMessage(self.Handle,WM_CLOSE, 0, 0); // Programm beenden
end;
Funktioniert auch, hat aber den selben Effekt, dass das spätere Formular nicht in der Taskbar liegt. Oder wenn ich mit
SetWindowLong(fWindow.Handle, GWL_EXSTYLE, WS_EX_APPWINDOW);
arbeite eben 2 Einträge habe...
Hat irgendjemand von euch eine Idee wie ich es hin bekomme, dass das Formular des Objektes sich so verhält wie ein Mainform, also sich in die Taskbar minimiert und es nur einen einzigen Taskbareintrag gibt?
(Borderstyle des Formulars ist bsSizeable, Formstyle ist fsNormal)