![]() |
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?
|
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.) |
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. |
Re: Dialogfenster bei click auserhalb des Fensters schließen
Zitat:
|
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 01:42 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