Einzelnen Beitrag anzeigen

kaiser1401

Registriert seit: 6. Mär 2006
Ort: Gescher
157 Beiträge
 
Delphi 7 Professional
 
#1

Taskbareintrag bei neuem Form aus Objekt

  Alt 22. Nov 2010, 17:08
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)
inc(i);
  Mit Zitat antworten Zitat