AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Ausblenden des Hauptformulars(SDI), aber nicht daraus erzeugte Child Formulare
Thema durchsuchen
Ansicht
Themen-Optionen

Ausblenden des Hauptformulars(SDI), aber nicht daraus erzeugte Child Formulare

Ein Thema von dstein · begonnen am 16. Dez 2022 · letzter Beitrag vom 19. Dez 2022
 
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
727 Beiträge
 
Delphi 12 Athens
 
#12

AW: Ausblenden des Hauptformulars(SDI), aber nicht daraus erzeugte Child Formulare

  Alt 16. Dez 2022, 18:44
Die Älteren von euch werden bestimmt das ein oder andere Delphi Buch aus dem Hanser Verlag, C&L oder mitip kennen.
Auch das Internet ist recht spärlich zu diesem Thema.
Leider finde ich zu meiner Frage keine für mich verständliche Antwort.
Also traue ich mich hier in die Runde eine Anfängerfrage zustellen.

Ich habe Hauptformular(SDI) und ein Childformular, vom Hauptformular aus erzeuge ich ein Childformular per:
frmClient := TfrmClient.create(self);
frmClient.show;

Nun möchte ich das Hauptformular minimieren (evtl. später nur in der Taskleiste) aber das frmClient sollen weiterhin auf dem Desktop sichtbar bleiben. Leider verschwinden das frmClient ebenfalls wenn das Hauptformular minimiert wird.
Ich habe verschiedenes ausprobiert, aber das ist ein stochern im Dunkeln.
Habt ihr Literaturhinweise und Stichworte wo ich von lernen kann. Oder sogar praktische Beispiele wie so etwas gemacht wird?
Seit etlichen Delphi-Versionen ist das Mainform der Anwendung (das erste mit Application.CreateForm erzeugte Form im DPR-File) der API-Owner aller weiteren Forms, und das ist die Ursache des beschriebenen Verhaltens. Windows stellt dadurch sicher, daß alle sekundären Forms versteckt werden, wenn das Mainform minimiert oder selbst versteckt wird.

Man kann dieses Verhalten ändern, in dem man im DPR-File die Zeile

Application.MainformOnTaskbar := true; auf false ändert, aber das hat unschöne Nebenwirkungen (seit Windows Vista); das Taskbar-Icon funktioniert dann nicht mehr richtig.

Besser ist es, wie in KodeZwerks Beispiel die CreateParams-Methode des sekundären Forms zu überschreiben.

Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW; Das gibt dem Form einen eigenen Taskbar-Button.

**Params.WndParent := 0; Und das entkoppelt das Form vom Mainform, es steht damit auf der gleichen Ebene in der Z-Ordnung wie dieses. Nachteil: Damit kann das Mainform auch das sekundäre Form überdecken, was nicht unproblematisch ist...
Peter Below
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz