Delphi-PRAXiS
Seite 1 von 2  1 2      

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/)
-   -   Mainform wird immer sichbar bei ShowModal (https://www.delphipraxis.net/162976-mainform-wird-immer-sichbar-bei-showmodal.html)

Captnemo 11. Sep 2011 20:26

Mainform wird immer sichbar bei ShowModal
 
Hallo Leute,

mein Titel ist etwas verwirrend, aber ich weiß nicht wie ich mein Problem besser in einem Satz darstellen kann.

Problem ist folgendes: Ich hab eine Mainform, aus der ich eine Terminform bei bedarf erzeuge, damit mehrer Termine gleichzeitig geöffnet werden können. Das funktioniert auch problemlos. Nun rufe ich aber die eine oder andere weitere Form mit showmodal aus der Terminform auf. Immer wenn ich das tue, dann verschwindet meine Terminform vom Bildschirm, die Hauptform wird sichtbar und meine mit showmodal aufgerufene Form wird sichbar. Wird die modale Form jetzt geschlossen kommt meine Terminform wieder.

Wie kann ich verhindern, dass die Mainform in den Vordergrund kommt?

Mein Terminform erzeuge ich mit Application.CreateForm. Kann es daran liegen? ich habe schon versucht, die modale form aus der Terminform heraus zu erzeugen, ging auch aber mit dem gleichen Effekt. Weiß mir zur Zeit keinen Rat.

himitsu 12. Sep 2011 06:32

AW: Mainform wird immer sichbar bei ShowModal
 
Wieso CreateForm?
Nutze direkt TTerminForm.Create .

ChrisE 12. Sep 2011 07:26

AW: Mainform wird immer sichbar bei ShowModal
 
Hallo,

ich glaube ich hatte ein ähnliches Problem - allerdings mit Delphi 2007. Ich hatte damals den Eindruck gewonnen, dass dieses Problem mit Delphi 2009/2010 behoben war.
Knackpunkt ist wohl zum einem die Delhpiversion als auch Parameter wie
Delphi-Quellcode:
Application.MainFormOnTaskbar := TRUE
. Das sollte in der DPR bei neueren Projekten ziemlich am Anfang stehen. Bei mir habe ich mit Delphi 2007 keine Lösung gefunden, wohingegen neuere Delphiversionen gar keine Probleme zeigten.

Vielleicht hilft Dir das ja.

Gruß, Chris

Captnemo 12. Sep 2011 21:48

AW: Mainform wird immer sichbar bei ShowModal
 
Leider löst das alles mein Problem nicht. Auch bei einem TTerminForm.Create() muß ich einen Owner angeben, wobei es sich ja nur um die Mainform oder die Application handeln kann. Dann hab ich das gleich Ergebnis wie beim Application.Createform.

Auch das MainformOnTaskbar bringt nicht die erhoffte Lösung. Laut OH sollte der Wert ja auch True sein, da sonst keine Aero-Effekt nutzbar sind, welche aber schon sein sollten. Hat noch jemand irgendwelche Ideen?

Sir Rufo 12. Sep 2011 21:50

AW: Mainform wird immer sichbar bei ShowModal
 
Zitat:

Zitat von Captnemo (Beitrag 1123866)
Leider löst das alles mein Problem nicht. Auch bei einem TTerminForm.Create() muß ich einen Owner angeben, wobei es sich ja nur um die Mainform oder die Application handeln kann. Dann hab ich das gleich Ergebnis wie beim Application.Createform.

Wieso muss man einen Owner angeben? Der Parameter ist Pflicht - ok - aber der Owner darf auch
Delphi-Quellcode:
nil
sein und das ist kein Owner ;)

mirage228 12. Sep 2011 21:51

AW: Mainform wird immer sichbar bei ShowModal
 
Wenn Du das Form selbst wieder freigeben möchtest, dann versuch mal nil als Owner zu übergeben.

[Edit] Kein roter Kasten :-o

ChrisE 13. Sep 2011 06:23

AW: Mainform wird immer sichbar bei ShowModal
 
Hallo Captnemo,
Zitat:

Zitat von Captnemo (Beitrag 1123866)
Auch das MainformOnTaskbar bringt nicht die erhoffte Lösung. Laut OH sollte der Wert ja auch True sein, da sonst keine Aero-Effekt nutzbar sind...

Naja, also die Aero-Effekte bestehen aus vielen Dingen. Ein Manifest löst eigentlich erstmal die meisten Designprobleme. MainFormOnTaskbar ist nicht so 100% wichtig - aber ich verstehe Dich :-)

Versuch mal mit dem Parameter
Delphi-Quellcode:
Application.MainFormOnTaskbar := FALSE/TRUE;
Application.ModalPopupMode := pmNone/pmAuto/pmExplicit;
ein wenig zu spielen. Meines Erachtens dürfte sich dadurch Dein Problem lösen lassen.

Ich brauch hier bei meinem D2007
Delphi-Quellcode:
FALSE
und
Delphi-Quellcode:
pmNone
. Ich Denke dass bei Deinem D2010
Delphi-Quellcode:
TRUE
und
Delphi-Quellcode:
pmNone
genauso funktionieren sollte :-)

Gruß, Chris

Captnemo 13. Sep 2011 06:50

AW: Mainform wird immer sichbar bei ShowModal
 
Zitat:

Zitat von Sir Rufo (Beitrag 1123868)
Wieso muss man einen Owner angeben? Der Parameter ist Pflicht - ok - aber der Owner darf auch
Delphi-Quellcode:
nil
sein und das ist kein Owner ;)

Grrr....auf die Idee bin ich noch gar nicht gekommen :wall: :wall: Werd ich mal ausprobieren, und meine Ergebnisse hier kundtun.

Captnemo 13. Sep 2011 07:09

AW: Mainform wird immer sichbar bei ShowModal
 
Alsooooooo: TTerminform.Create(nil) hat nix an dem Verhalten geändert. (Jetzt stellt sich mir die Frage welche Auswirkungen, Vor- oder Nachteile, das angeben oder weglassen des Owners auf meine Application hat, denn mir sind keine Veränderungen aufgefallen).

Aber Application.ModalPopupMode:=pmExplicit scheint die Lösung zu sein. Zumindest verhält sich mein Programm jetzt so, wie ich es mir erhofft hatte. Ob es andere "Nebenwirkungen" hat, wird sich im weiteren Verlauf zeigen.

himitsu 13. Sep 2011 07:48

AW: Mainform wird immer sichbar bei ShowModal
 
Owner und Parent

Der Parent (bei den VCL-Komponenten) ist für die Darstellung zuständig, also worin die Komponente dargestellt wird.

Der Owner ist für die Freigabe zuständig.
Existiert das Objekt, wärend der Owner freigegeben wird, dann gibt der Owner die Komponente mit frei.

> Siehe die ganzen Komponenten, welcher über den VCL-Loader auf die Forms geladen wurden.
> Diese verschwinden mit, wenn man die Form freigibt.

Gibt man eine Komponente aber selber frei, dann braucht man nicht unbedingt einen Owner, bzw. der ist unter Umständen fehl am Platz.
Denn wenn man selber eine Komponente freigeben will, welche vorher von dem Owner schon weggeräumt wurde, dann knallt es gerne mal.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:23 Uhr.
Seite 1 von 2  1 2      

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