![]() |
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:
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".
form1.Show;
Ich habe dann in Form2 mal eine Checkbox hinzugefügt mit folgendem Code:
Delphi-Quellcode:
Aber passieren tut da nix obwohl er den Style sauber setzt.
if checkBox1.Checked then
Form1.FormStyle := fsStayOnTop else Form1.FormStyle := fsNormal; 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: |
Re: FormStyle Konfusitäten
Hast du alle Updates für D2007 installiert?
|
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 ? |
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? |
Re: FormStyle Konfusitäten
Imho bedeutet .Show auch nicht das Fenster in den Vordergrund zu holen. Versuch es mal mit .BringToFront
|
Re: FormStyle Konfusitäten
Zitat:
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 |
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 !? |
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:
auf. Und Dort dann eine CheckBox mit dem Code:
Form2.Show;
Delphi-Quellcode:
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.
if CheckBox1.Checked then
form2.FormStyle := fsStayOnTop else form2.FormStyle := fsNormal; 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:02 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