Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Prism Dialogfenster bei click auserhalb des Fensters schließen (https://www.delphipraxis.net/50027-dialogfenster-bei-click-auserhalb-des-fensters-schliessen.html)

Taladan 19. Jul 2005 22:33


Dialogfenster bei click auserhalb des Fensters schließen
 
Hallo. Ich habe ein Dialogfeld, was eigendlich mehr nur ne bessere Eingabebox ist, welches Modal geöffnet wird. also per winform.showdialog. Nun möchte ich gern dieses Fenster schließen, falls man NICHT auf das Fenster oder seinen Inhalt clickt, also irgendwo auserhalb. Also wenn Windows dieses "Ding" per Sound ausgibt. Ist das möglich?

Olli 19. Jul 2005 22:36

Re: Dialogfenster bei click auserhalb des Fensters schließen
 
Nichts ist unmöglich. Nur leider mußt du, um einen Klick außerhalb deines Fensters zu registrieren a.) die Maus fangen (Mouse Capturing) oder b.) einen globalen Hook installieren.

An deiner Stelle würde ich lieber auf WM_KILLFOCUS reagieren. Will heißen, wenn ein anderes Fenster als deines aktiviert wird und deins damit den Fokus verliert, schließt du deins.

Wenn jetzt einer kommt und sagt, es sei doch Delphi.NET, jage ich euch Luckie oder Alci mit der Trollklatsche auf den Hals! Natürlich ist es das. Aber .NET ist ja nur ein Wrapper um die Win32-API! (Zumindest bei den Forms usw.)

Robert Marquardt 20. Jul 2005 04:55

Re: Dialogfenster bei click auserhalb des Fensters schließen
 
Bei einer mit ShowModal gezeigten Form geht das nicht.
Es geht aber mit Show und dann das Deactivate der TForm ueberschreiben.

Olli 20. Jul 2005 08:37

Re: Dialogfenster bei click auserhalb des Fensters schließen
 
Zitat:

Zitat von Robert Marquardt
Bei einer mit ShowModal gezeigten Form geht das nicht.

Ah, verstehe, wenn zB ein Fenster App-Modal oder Sys-Modal angezeigt wird, und zB die App den ganzen Workspace belegt, dann kann kein anderes Fenster aktiviert und damit das modale nicht deaktiviert werden. Hatte auch erst etwa ungläubig geguckt. Aber hast recht ;) ... dann bliebe noch der globale Hook *rofl*

Robert Marquardt 20. Jul 2005 09:41

Re: Dialogfenster bei click auserhalb des Fensters schließen
 
Nein, bei ShowModal ist es schwer bis unmoeglich die Maus zu fangen.
Man setzt stattdessen den OnDeactivate-Event oder leitet eine Klasse ab und ueberschreibt Deactivate.
Jedesmal wenn man eine Form per Klick oder sonstwie verlaesst, so bekommt man ein OnDeactivate.
Dort macht man einfach ein Close der Form. Damit erhaelt man genau das gewuenschte Ergebnis.

Ich habe das genutzt um fuer einen Auftrag einen kleinen Popup-Editor zu realisieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:07 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