![]() |
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 |
Re: Showmodal ist nicht modal
Liste der Anhänge anzeigen (Anzahl: 1)
Die Hilfe hatte ich auch gelesen. Daher war ich auch sehr verwundert.
Hab mir dein DummyProjekt vom Nachbarthread mal genommen und bei Application.Run nen Breakpoint gesetzt. Wie du im Anhang siehst ist MainFormOnTaskbar False |
Re: Showmodal ist nicht modal
:wiejetzt: :shock:
Wie ich sehe, ist das bei meinem eigentlichen Projekt auch so. Komisch, dann verstehe ich die Onlinehilfe wohl falsch :gruebel: Aber ich setze es trotzdem noch im eigentlichen Projekt auf FALSE. Sicher ist sicher :drunken: Greez, Chris [EDIT]Tja wer lesen kann... Ok, da steht ja Zitat:
[/EDIT] |
Re: Showmodal ist nicht modal
Die meinen da wirklich "erstellt".
Wenn ich im D2007 ein neues Projekt erstelle wird in der DPR nach dem Initialize die Zeile "Application.MainformonTaskBar := true" aufgerufen. Die Property ist per Default im Code anscheinend False und wird direkt in der DPR auf true gesetzt. |
AW: Showmodal ist nicht modal
Tut mir leid wenn ich den Thread wieder ausgrabe, habe aber mit den hier angegebenen Methoden etwas getestet und dabei etwas sonderbares festgestellt, dass ich euch mitteilen möchte:
Die Verwendung von
Code:
führt bei Textboxen des Typs TRichEdit dazu dass bei sehr langen Texten nur noch asiatische Schriftzeichen angezeigt werden. :gruebel:
Application.ModalPopupMode := pmAuto;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:25 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