Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Problem beim Minimieren
Stefan S. - Mi 22.12.04 18:13
Titel: Problem beim Minimieren
@Christian S.: OK, Thread Nr.1! ^^
Wenn man bei meinen Programmen bei einem Formular, das nicht von Anfang an da war, sondern erst durch "Form1.Hide + Form2.Show" aufgerufen wurde, auf "Minimieren" klickt, dann ist da nicht nur das zum Programm gehörende Rechteck in der Taskleiste unten, sondern auch noch gleich darüber, ganz links, eine kleine Extra-Leiste für das Fenster. Da aber in dem Programm nie mehrere Formulare gleichzeitig angezeigt werden, will ich, dass das jeweilige Fenster auch so behandelt wird, als wäre es das einzige, sprich, beim Minimieren soll nur das Rechteck in der Taskleiste sein. Aber wie geht das?
Moderiert von
Christian S.: Topic aus Sonstiges verschoben am Mi 22.12.2004 um 17:15
Coder - Mi 22.12.04 19:30
Normalerweise sollte das nicht so sein. :gruebel:
Vergleich mal im Objektinspektor deine Form mit einer neu erstellten Form, um zu sehen ob du irgendwas falsches verstellt hast. :nixweiss:
LCS - Do 23.12.04 10:21
Hi
Form1 ist in der Regel das Hauptformular deiner Anwendung. Wenn Du nun einfach schreibst
Quelltext
1: 2:
| form1.Hide; form2.Show; |
versteckst du zwar das erste Formular, aber es ist trotzdem immer noch vorhanden. Und weil das erste Fenster als Hauptfenster deiner Anwendung agiert, ist es solange vorhanden wie deine Anwendung läuft. Wenn du nun ein zweites, unabhängiges fenster öffnest und dann minimierst, wird in der Taskleiste dein laufendes Programm angezeigt und darüber das minimierte Fenster.
Zur Abhilfe könntest du z. B. aus deinem Programm ein MDI-Programm machen (Hauptfenster.Formstyle auf MDIForm) und alle untergeordneten Fenster als MDIChilds.
Gruss Lothar
Stefan S. - Do 23.12.04 17:48
LCS hat folgendes geschrieben: |
Zur Abhilfe könntest du z. B. aus deinem Programm ein MDI-Programm machen (Hauptfenster.Formstyle auf MDIForm) und alle untergeordneten Fenster als MDIChilds. |
Dann werden aber von Anfang an auch alle "MDIChild"-Fenster angezeigt ("Visible" kann man dann nicht mehr auf "False" stellen) und das sollen sie nicht... Gibt es eine andere Lösung?
Nochmal zur Verdeutlichung, so sieht das aus, wenn ich Form2 minimiert habe:
Das unten rechts ist für das ganze Programm und das oben links nur für das eine Fenster. Und das soll weg.
LCS - Do 23.12.04 19:10
Hi
DaSteve hat folgendes geschrieben: |
Dann werden aber von Anfang an auch alle "MDIChild"-Fenster angezeigt ("Visible" kann man dann nicht mehr auf "False" stellen) und das sollen sie nicht... Gibt es eine andere Lösung?
|
Nicht wenn du sie zur Laufzeit dynamisch erzeugst und beim schliessen wieder freigibst.
Gruss Lothar
EUOCheffe - So 26.12.04 19:25
Zwei Möglichkeiten:
1. Fenster dynamisch erstellen und statt Create einfach CreateParented(GetDesktopWindow) aufrufen.
2. Fenster normal von Delphi erstellen lassen, in der Fensterklasse aber noch folgende Prozedur deklarieren:
Delphi-Quelltext
1: 2: 3: 4:
| type TForm2 = class(TForm) procedure CreateParams(var Params: TCreateParams); override; end; |
die dann so aussieht:
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure TForm2.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); Params.WndParent:=GetDesktopWindow; end; |
Bei meinen Landsleuten hätte es die Lösung auch gegeben, nur ist der DB-Server grad down, deshalb hab ichs halt selber eingetippt.
Stefan S. - Do 30.12.04 15:48
@EUOCheffe: Hm, aber irgendwie funktioniert das nicht so, wie ich mir das vorgestellt hab: Wenn man dann unten drauf klickt, nachdem man es minimiert hat, dann öffnet sich da so ein Popup-Menü, wo ich dann beide Fenster auswählen kann: Das Startfenster - wenn ich da draufklicke passiert gar nichts - und Form2, das ich dann per Klick öffnen kann. Ich hätte das am liebsten so, dass er einfach so tut, als wären alle Forms gleich, nur das halt mal die eine geöffnet ist und die andere geschlossen und umgekehrt, will sagen, da soll einfach immer nur ein einziges "Rechteck" sein, mit dem ich das jeweilige Fenster wieder öffnen kann... Mach ich vielleicht auch irgendwas falsch? Oder hat das alles vielleicht auch was speziell mit meinem PC zu tun, also, dass das nur bei mir so ist?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!