Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi FormStyle Konfusitäten (https://www.delphipraxis.net/108707-formstyle-konfusitaeten.html)

moelski 18. Feb 2008 09:38


FormStyle Konfusitäten
 
Moin !

Ich nutze Delphi 2007 und bin etwas verwirrt was Form.FormStyle anbelangt. Und zwar nutzen wir in unserer Anwendung mehrere Formulare. Angezeigt werden sie meist mit .Show. Wenn man in der Anwendung dann auf das Hauptfenster klickt verschwinden die zusätzlichen Formulare hinter dem Hauptfenster.

Ich habe deshalb mal (weil dieses Verhalten ziemlich bescheiden ist) eine Mini Anwendung erstellt. Ein neues VCL Projekt (Form1) und zusätzlich ein Forumlar (Form2). Auf dem ersten Formulr ein Button mit diesem Quelltext:
Delphi-Quellcode:
form1.Show;
Startet man das, geht Form1 auf. Nach Klick auf Form2 geht das auf. Soweit alles klar. Wenn ich jetzt aber auf Form1 klicke, dann bleibt Form2 über Form1 stehen und legt sich nicht "dahinter".
Ich habe dann in Form2 mal eine Checkbox hinzugefügt mit folgendem Code:
Delphi-Quellcode:
if checkBox1.Checked then
    Form1.FormStyle := fsStayOnTop
  else
    Form1.FormStyle := fsNormal;
Aber passieren tut da nix obwohl er den Style sauber setzt.

Was ich nun überhaupt nicht verstehe ...
Warum werden in unserer Anwendung die additiven Fenster hinter das Hauptfenster gelegt wenn man das Hauptfenster anklickt und warum ist das in der hier beschriebenen MiniDemo nicht so?

Was müsste ich denn tun, damit FormStyle so funktioniert wie erwartet? Und was könnte der Grund sein warum es in unserer richtigen Anwendung so funktioniert wie hier beschrieben? :gruebel:

Bernhard Geyer 18. Feb 2008 09:42

Re: FormStyle Konfusitäten
 
Hast du alle Updates für D2007 installiert?

moelski 18. Feb 2008 09:47

Re: FormStyle Konfusitäten
 
Moin !

Hmm das Dezember Update ist noch nicht drauf sehe ich gerade.
Und das Hilfe Update.

Wurde dort denn etwas gefixt was dieses Problem betrifft ?

moelski 18. Feb 2008 10:13

Re: FormStyle Konfusitäten
 
Moin !

So ich habe nun die Update installiert. Geändert hat sich aber nix.

Hat sonst noch wer Ideen zu dieser Problematik?

mkinzler 18. Feb 2008 10:17

Re: FormStyle Konfusitäten
 
Imho bedeutet .Show auch nicht das Fenster in den Vordergrund zu holen. Versuch es mal mit .BringToFront

hanspeter 18. Feb 2008 10:20

Re: FormStyle Konfusitäten
 
Zitat:

Zitat von moelski
Moin !

So ich habe nun die Update installiert. Geändert hat sich aber nix.

Hat sonst noch wer Ideen zu dieser Problematik?

Stayontop hält das Fenster oben aber bei mehreren Fenstern mit Stayontop hat man wieder den Zufall im Spiel.
Stayontop läßt sich schwer testen, da beim Debugen so ein Fenster auch den Quelltext verdeckt.
Ein Hauptfenster gibt es nur per Definition, die generierten Forms sind gleichberechtig.

Weise der neuen Form aber einmal die Mainform als Parent zu, dann sollte es gehen.

(Form2.Parent := Form1.Parent;)

Gruß
Peter

moelski 18. Feb 2008 10:27

Re: FormStyle Konfusitäten
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin !

Also bei mir tuts nicht. Egal ob mit oder ohne StyOnTop und auch Parent bringt keine Besserung. Das zweite Formular überdeckt immer das erste.

Vielleicht kann sich ja mal jemand die Mini App ansehen. Vielleicht mache ich ja grundlegend was falsch !?

moelski 18. Feb 2008 12:35

Re: FormStyle Konfusitäten
 
Moin !

Ich habe jetzt das gleiche Projekt noch mal unter D7 erstellt. Also 2 Formulare, das erste Formular ruft das zweite mittels:
Delphi-Quellcode:
Form2.Show;
auf. Und Dort dann eine CheckBox mit dem Code:
Delphi-Quellcode:
  if CheckBox1.Checked then
    form2.FormStyle := fsStayOnTop
  else
    form2.FormStyle := fsNormal;
Geht problemlos. Nach dem Start kann man Form2 anzeigen lassen. Klickt man auf Form1 überlagert es Form2 und klickt man auf Form2 überlagert es Form1. So als wären es zwei unabhängige Applikationen.

Setzt man die checkbox so bleibt Form2 im Vordergrund und Form1 liegt dahinter. Allerdings muss ich gerade feststellen, dass die Fenster dann über allem liegen also auch über anderen anwendungen :cry: Es ist zum Haareraufen.

Ich stelle mal meine Frage um ... :zwinker:
Wie kann ich in Delphi 2007 dafür sorgen, dass ich von einem Formular aus andere Formulare aufrufe und diese aufgerufenen Formulare immer über dem Formalar liegen, von dem sie aufgerufen wurden? Und die additiven Formulare dürfen nicht andere Applikationen überlagern.
Und ich meine damit kein ShowModal, denn ich muss sowohl auf das Hauptformular als auch auf die additiven Formulare Zugriff haben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz