Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Hintergrundform abdunkeln, wenn andere Form Modal geöffnet wird? (https://www.delphipraxis.net/215064-hintergrundform-abdunkeln-wenn-andere-form-modal-geoeffnet-wird.html)

KodeZwerg 13. Mai 2024 15:42

AW: Hintergrundform abdunkeln, wenn andere Form Modal geöffnet wird?
 
Zitat:

Zitat von NoGAD (Beitrag 1536619)
Danke. Das ist auch eine sehr schöne Variante.

Sehr gerne!
Zitat:

Zitat von NoGAD (Beitrag 1536619)
Leider verstehe ich nicht, warum die Fensterfarbe immer in einem Grauton erscheint, selbst wenn ich ... clBlack

Weil clBlack keine SystemFarbe ist.
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.

NoGAD 14. Mai 2024 06:30

AW: Hintergrundform abdunkeln, wenn andere Form Modal geöffnet wird?
 
Danke für die Erklärung. :-)

LG Mathias

Bodenseematze 26. Mai 2025 10:24

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?

peterbelow 26. Mai 2025 12:49

AW: Hintergrundform abdunkeln, wenn andere Form Modal geöffnet wird?
 
Try a handler for the Screen.OnActiveFormchange event, that may work for your purpose.

Bodenseematze 26. Mai 2025 15:15

AW: Hintergrundform abdunkeln, wenn andere Form Modal geöffnet wird?
 
Zitat:

Zitat von peterbelow (Beitrag 1548964)
Try a handler for the Screen.OnActiveFormchange event, that may work for your purpose.

I tried this - but it has two problems...
Code:
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;
...
1.) how do I get if the foreground window is modal?
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).

Uwe Raabe 26. Mai 2025 16:05

AW: Hintergrundform abdunkeln, wenn andere Form Modal geöffnet wird?
 
BTW, warum plötzlich in Englisch?

Bodenseematze 27. Mai 2025 06:59

AW: Hintergrundform abdunkeln, wenn andere Form Modal geöffnet wird?
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1548971)
BTW, warum plötzlich in Englisch?

Weil peterbelow auf Englisch geantwortet hatte und ich wollte, dass er meine Rückfragen versteht... :wink:

Uwe Raabe 27. Mai 2025 08:34

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.

peterbelow 27. Mai 2025 09:49

AW: Hintergrundform abdunkeln, wenn andere Form Modal geöffnet wird?
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1549001)
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.

Genau das ist mir passiert, war vorher gerade im englischen Forum unterwegs. Man wird halt nicht jünger...:(


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:34 Uhr.
Seite 3 von 3     123   

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