![]() |
AW: Hintergrundform abdunkeln, wenn andere Form Modal geöffnet wird?
Zitat:
Zitat:
Du kannst von 0 bis 30 oder verfolge wo COLOR_WINDOW definiert ist um vielleicht noch andere Möglichkeiten zu finden. Im jetzigen zustand muss es eine Systemfarbe sein. Zum "abdunkeln" wird sicherlich eine passen. |
AW: Hintergrundform abdunkeln, wenn andere Form Modal geöffnet wird?
Danke für die Erklärung. :-)
LG Mathias |
AW: Hintergrundform abdunkeln, wenn andere Form Modal geöffnet wird?
Auch wenn der Thread schon etwas älter ist...
...ich hänge mich mal an :wink: Die Lösungen hier im Thread gehen immer davon aus, dass man das abdunkelnde Fenster selber erzeugt und zerstört, weil eine andere Form von der eigenen aus ShowModal angezeigt wird. Ich möchte die Logik gerne umdrehen - d.h. ich möchte in meiner Form darauf reagieren, wenn irgendein anderer Dialog in meiner Applikation von irgendwoher ShowModal gesetzt wird. Wenn das erkannt wird, soll die eigene Form abgedunkelt werden (d.h. das abdunkelnde Zusatz-Fenster erzeugt / angezeigt werden). Aber wie erkenne ich das am Besten (ohne total kompliziert zu werden)? Über Application.OnModalBegin? Ist dort sicher, dass der Sender das Fenster ist, das modal geschaltet wird/wurde? Und wie leite ich das dann an alle meine sichtbaren Forms weiter (sind alle von einer Basisklasse abgeleitet, d.h. prinzipiell machbar)? Sollte auch funktionieren, wenn ein Standard-Dialog (z.B. MessageBox) modal aufgeschaltet wurde... EDIT: inzwischen habe ich herausgefunden, dass die Verwendung des TMessageManager gut geeignet wäre - aber ich bin noch bei Delphi7 und da gibt's dennoch nicht - und auch keine 3rdParty Implementierung eines EventBus o.ä. :(, oder? |
AW: Hintergrundform abdunkeln, wenn andere Form Modal geöffnet wird?
Try a handler for the Screen.OnActiveFormchange event, that may work for your purpose.
|
AW: Hintergrundform abdunkeln, wenn andere Form Modal geöffnet wird?
Zitat:
Code:
1.) how do I get if the foreground window is modal?
procedure TMyForm.ScreenActiveFormChange(
sender_ : TObject ); var frmActive : TCustomForm; bIsModal : Boolean; ctrlForeground : TWinControl; begin ctrlForeground := FindControl( Windows.GetForegroundWindow() ); frmActive := nil; bIsModal := false; if ( Assigned(ctrlForeground) and (ctrlForeground is TCustomForm) ) then begin frmActive := TCustomForm( ctrlForeground ); bIsModal := ( fsModal in frmActive.FormState ); end; ... I find the correct foreground Form in the above code snippet but the FormState never contains fsModal - only fsVisible... 2.) the procedure will not be called if a dialog pops up (e.g. a TPrinterSetupDialog) EDIT: I even tried to use Screen.OnActiveControlChange - with same result (will also not be called if the modal foreground dialog e.g. is a TPrinterSetupDialog). |
AW: Hintergrundform abdunkeln, wenn andere Form Modal geöffnet wird?
BTW, warum plötzlich in Englisch?
|
AW: Hintergrundform abdunkeln, wenn andere Form Modal geöffnet wird?
Zitat:
|
AW: Hintergrundform abdunkeln, wenn andere Form Modal geöffnet wird?
Die Frage ging auch eigentlich an Peter, der hier ja schon so einige Posts in Deutsch abgesetzt hat.
Ich muss allerdings zugeben, dass mir das auch gelegentlich passiert. Man verliert manchmal den Kontext, wenn man in beiden Foren gleichzeitig unterwegs ist. |
AW: Hintergrundform abdunkeln, wenn andere Form Modal geöffnet wird?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:34 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