AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Showmodal ist nicht modal

Ein Thema von wadriller · begonnen am 18. Jan 2010 · letzter Beitrag vom 27. Mär 2012
Antwort Antwort
Seite 1 von 2  1 2      
wadriller

Registriert seit: 25. Feb 2009
43 Beiträge
 
Delphi XE2 Professional
 
#1

Showmodal ist nicht modal

  Alt 18. Jan 2010, 10:42
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 ??
Gruß
Michael
  Mit Zitat antworten Zitat
fatalerror
(Gast)

n/a Beiträge
 
#2

Re: Showmodal ist nicht modal

  Alt 18. Jan 2010, 11:00
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]


Wikipedia:
Zitat:
Modal windows in Windows are instead implemented as transient windows. Transient windows behave similarly to modal windows – they are always on top of the parent window and are not shown in the window list, but they do not disable the use of other windows in the application.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#3

Re: Showmodal ist nicht modal

  Alt 18. Jan 2010, 11:07
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
Oliver
  Mit Zitat antworten Zitat
wadriller

Registriert seit: 25. Feb 2009
43 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Showmodal ist nicht modal

  Alt 18. Jan 2010, 11:11
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.
Gruß
Michael
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#5

Re: Showmodal ist nicht modal

  Alt 18. Jan 2010, 11:14
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:
Modal windows are more common in the Microsoft Windows world, where modal windows frequently are an element of Multiple Document Interface applications, than in that of Mac OS, Unix-derivates, and the X Window System. In these OSes, many features that would be represented by modal windows in Windows are instead implemented as transient windows. Transient windows behave similarly to modal windows – they are always on top of the parent window and are not shown in the window list, but they do not disable the use of other windows in the application.
Es ist also so, daß andere BS als Windows modale Fenster anders handhaben.

Sherlock
Oliver
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: Showmodal ist nicht modal

  Alt 18. Jan 2010, 11:15
Hallo wadriller,

ich hatte das selbe Problem hier

Es hat sich folgendes gezeigt:
1. Es passiert nicht mit Delphiversionen > 2007
2. Man kann es D2007 abgewöhnen wenn man
a) Application.MainFormOnTaskbar := FALSE; in der DPR setzen direkt nach Application.Initialize; b) Application.ModalPopupMode := pmAuto; bringt bei mir außerdem noch Verbesserung.

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]
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
wadriller

Registriert seit: 25. Feb 2009
43 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Showmodal ist nicht modal

  Alt 18. Jan 2010, 11:27
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.
Gruß
Michael
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

Re: Showmodal ist nicht modal

  Alt 18. Jan 2010, 11:36
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 ModalPopupMode := pmAuto; regelt auch die Geschichte mit PopupParent. Allerdings halt versuchsweise Automatisch.

Greez, Chris
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
wadriller

Registriert seit: 25. Feb 2009
43 Beiträge
 
Delphi XE2 Professional
 
#9

Re: Showmodal ist nicht modal

  Alt 18. Jan 2010, 15:30
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.
Gruß
Michael
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

Re: Showmodal ist nicht modal

  Alt 18. Jan 2010, 15:38
Laut der hilfe von Delphi 2007:
Zitat:
Die Standardeinstellung von MainFormOnTaskBar für in Delphi 2007 und späteren Produkten erstellte Anwendungen ist True, für frühere Produkte False.
und vielleicht auch noch wichtig:
Zitat:
MainFormOnTaskBar sollte beim Start gesetzt werden und während der gesamten Anwendungsdauer erhalten bleiben. Das Ändern dieser Eigenschaft zur Laufzeit könnte unerwartetes Verhalten verursachen.
Und bei mir ist es so, dass die Fenster nach dem Wechsel hinter dem MainForm sind. Da sie aber Modal sind kann die Anwendung unbediehnbar werden, da man das eigentlich modale oberste Fenster nicht mehr erreichen kann.

Aber das nur anbei.

Viel Erfolg.

Greez, Chris
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:31 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