![]() |
Modale Fenster verschwinden
Hallo Zusammen,
Wir haben in unserer Software immer wieder ein Phänomen das wir uns noch nicht so wirklich erklären können: Es kommt immer wieder dazu, dass modale Fenster hinter einem anderen Fenster verschwinden. Dann kann man in dem Programm soviel klicken wie man will, es passiert nichts, weil das modale Fenster ja den Focus hat, man es aber nicht sieht. Oft hat man Glück und man kriegt es mit "ALT-Tab" wieder in den Vordergrund, das ist aber keine zufriedenstellende Lösung auf Dauer. Das Hauptprogramm ist ein MDI Programm. Kennt jemand dieses Verhaltung von Delphi, oder hat jemand eine Idee wie man dem auf die Schliche kommen könnte? Das Problem ist, dass es nicht immer auf tritt, eher zufällig. |
AW: Modale Fenster verschwinden
Welche Delphi-Version?
Ältere Versionen haben Problem mit dem geänderten Z-Order-Fensterhandling von neueren Windows-Versionen. |
AW: Modale Fenster verschwinden
XE5, das Problem bestand auch schon unter Delphi 2007.
Ich habe mir auch schon den Changelog von XE6 durchgesehen, dort konnte ich aber im Zusammenhang mit VCL nichts mit modalen Fenstern finden. |
AW: Modale Fenster verschwinden
Habe ich auch oft mit "älteren" Versionen gehört, hier bei XE5 passiert das auch ab und an. Immer wieder witzig :roteyes:
Reproduzieren kann ich es nicht. |
AW: Modale Fenster verschwinden
Ich hatte beim Wechsel von XP auf Windows7 auch mit diesem Problem zu kämpfen.
Geholfen hat mir diese Routine von Schweizern: ![]() |
AW: Modale Fenster verschwinden
Das Problem kenne ich, bei uns hat das hier geholfen:
![]() |
AW: Modale Fenster verschwinden
Warum im onIdle? Wäre onActivate nicht eher geeignet?
Und: Ich sehe grade: TApplication.OnModalBegin und .onModalEnd. Noch nie vorher drüber gestoplert. Was man damit wohl anstellen kann? |
AW: Modale Fenster verschwinden
MDI ist etwas, daß wohl nicht mehr so gut gewartet wird und wo es gern mal Problemchen gibt.
![]() Wenn du es schaffst die Z-Order auszulesen, dann kannst du im Hintergrund einen Timer laufen lassen, welcher für das aktive Fenster schaut wo es ist und es dann nach vorne schiebt, wenn es nicht mehr vorne liegt. Habt ihr noch StayOnTop-Fenster im Programm? Wenn ja, dann mußt du da aufpassen. (wir haben die alle rausgeworfen/umgebaut, da es damit noch mehr Probleme gab) Ansonsten ein globaler Hotkey im Programm, der das aktive Fenster nach vorne holt, bzw. im Application.OnActivate (TApplicationEvents), wenn die Anwendung den Fokus bekommt. > Screen.ActiveCustomForm Ach ja, aufpassen muß man mit einigen Windowsdialogen, wie z.B. der MessageBox, welche von der VCL nicht grade sonderlich beachtet/erkannt werden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:49 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 by Thomas Breitkreuz