![]() |
Showmodal ist nicht modal
Hallo zusammen.
Ich habe ein recht kurioses Problem. Wir haben einen Anwendung mit einem Hauptfenster. Hier liegt ein Grid mit Datensätzen. Beim Doppelklick auf einen Datensatz wird ein Fenster Modal (showmodal) angezeigt. Aus dem Modalen Fenster wird dann ein weiteres Fenster Modal aufgerufen. Jetzt habe ich im Hintergrund mein Hauptfenster, modal darüber meine erste Form und modal über dieser wieder meine zweite Form. Soweit so gut. Jetzt wechselt der Nutzer in eine Fremdsoftware. Diese wird komplett im Vollbild angezeigt (legt sich komplett vor die Windowstaskleiste und hat keinen Minimierenknopf). Wenn der Nutzer aus der Fremdsoftware jetzt wieder in unsere Software wechseln will, drückt er die Windowstaste und klickt auf der Taskleiste auf unsere Software. Jetzt kommt es manchmal vor das dann das Hauptfenster zu sehen ist und im Hintergrund sind die 2 (eigentlich) modalen Fenster. Ich kann jetzt sowohl das Hauptfenster bedienen als auch bei Forms. Hatte jemand schonmal ein solches Problem ? Kann es sein das die Fremdsoftware hier irgendwie per Windowsmessages unseren Fenstern sagt das sie nicht mehr modal sind ? Wie kann ich das rausfinden bzw. abfangen ?? |
Re: Showmodal ist nicht modal
Ja: [sorry, ignorieren]showmodal ist in Windows leider nicht modal![ende fehler]
[eedit] sorry, war ein Fehler. Aber trotzdem, Modale Fenster sind in Windows ein bekanntes Problem.[/edit] ![]() Zitat:
|
Re: Showmodal ist nicht modal
Das glaube ich nicht. Wenn ich einen Dialog modal zeige, dann kann ich den Rest meiner Applikation nicht bedienen, bis der Dialog weg ist. Das ist modal genug.
Die Schwierigkeit dürfte eher sein, daß ein modaler Dialog einen anderen modalen Dialog öffnet. Ich weiss nicht, ob das nicht irgendwie Windows in Erklärungsnot bringt... Sherlock |
Re: Showmodal ist nicht modal
Danke euch beiden.
Ich glaube aber nicht das das Problem daher kommt das ein Modales Fenster ein modales Fenster aufruft. Sonst müsste es ja auch Probleme geben wenn ein Form1 eine Form2 modal anzeigt und das Form2 z.B. einen OpenDialog. Komisch ist halt das das Problem nur dann auftritt wenn er aus dem Fremdsoftware in unsere wechselt. |
Re: Showmodal ist nicht modal
Hast Du das mit dem Form1, Form2 und nen Dateidialog schon probiert?
Übrigens, der Vollständigkeit halber, die Wiki wurde oben nicht komplett zitiert, weshalb da ein falscher Eindruck entsteht: Zitat:
Sherlock |
Re: Showmodal ist nicht modal
Hallo wadriller,
ich hatte das selbe Problem ![]() Es hat sich folgendes gezeigt: 1. Es passiert nicht mit Delphiversionen > 2007 2. Man kann es D2007 abgewöhnen wenn man a)
Delphi-Quellcode:
in der DPR setzen direkt nach
Application.MainFormOnTaskbar := FALSE;
Delphi-Quellcode:
b)
Application.Initialize;
Delphi-Quellcode:
bringt bei mir außerdem noch Verbesserung.
Application.ModalPopupMode := pmAuto;
Scheint leider ein Fehler zu sein, aus dem man bei D2007 nicht ohne weiters raus kommt. Wie man bei dem Thread von mir sieht, tritt dass Problem nicht mehr in höheren Versionen von Delphi auf. Sorry, dass ich dir keine besseren Meldungen liefern kann. Solltest du jedoch zu neuen / besseren Erkenntnissen kommen, wäre es toll wenn du die mitteilen könntest. Greez, Chris [Edit]Schreiben ist bei mir heut Glückssache :-( [/Edit] |
Re: Showmodal ist nicht modal
Hallo ChrisE.
Danke für die Infos. Sind zwar keine "guten" Nachrichten, aber immerhin scheine ich nicht allein mit dem Problem zu sein. Wir haben jetzt zu dem Thema in einer Ausgabe des "Entwicklers" einen Tipp gefunden das man vor "FormXY.Showmodal" noch "FormXY.Popupparent := self" aufrufen soll. Damit wäre das Problem auch behoben. Da es bei uns aber sehr viele Stellen betrifft wäre mir deine Variante sympathischer. Vielleicht hilft dir mein Tip aber noch weiter. |
Re: Showmodal ist nicht modal
Hallo wadriller,
der Tip ist nicht schlecht, aber löst leider auch nicht alle Probleme. Denn wenn die einen MessageDialog aufrufst kannst du da nur schwer einen Popupparent angeben. Und diese Fenster "verschwinden" leider genauso beim umschalten zwischen Anwendungen hinter dem Mainform. Und der Parameter
Delphi-Quellcode:
regelt auch die Geschichte mit PopupParent. Allerdings halt versuchsweise Automatisch.
ModalPopupMode := pmAuto;
Greez, Chris |
Re: Showmodal ist nicht modal
Ich werde auf jeden Fall mal noch den PopupMode testen.
Habe gerade nachgeschaut. In unserer DPR wird nirgends "MainFormOnTaskbar" gesetzt. Wenn ich auf "Application.Run" einen Haltepunkt setze sehe ich das "MainFormOnTaskbar" per Default auf "False" steht. Ein Unterschied zu deinem Problem in dem verlinkten Thread ist ja noch, das bei mir sowohl das Hauptform als auch die anderen 2 Forms (welche per Showmodal aufgerufen wurden) sich bedienen lassen. Bei dir ist es ja so das das Modale Fenster hinter der Form liegt und die Form sich nicht bedienen lässt. |
Re: Showmodal ist nicht modal
Laut der hilfe von Delphi 2007:
Zitat:
Zitat:
Aber das nur anbei. Viel Erfolg. Greez, Chris |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:40 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