![]() |
TFindDialog wird OnClose nicht gefeuert (Delphi Rio)
Hallo,
Nach einem Öffnen des FindDialogs und dann darin Abbrechen klicken verliert die gesamte Anwendung den Focus und verschwindet hinter anderen geöffneten Programmen. Dabei habe ich feststellen müssen, das das OnClose des Dialogs nicht gefeuert wird und ich damit keine Möglichkeit habe, manuell den Focus wieder zu korrigieren. In einer älteren Delphi-Version hat das mal funktioniert... Das tritt dann natürlich auch auf wenn man ein WPTools WPRichText verwendet, welches standardmäßig auch den FindDialog verwendet. Kennt jemand das Problem und eventuell auch eine Abhilfe? Ciao Stefan |
AW: TFindDialog wird OnClose nicht gefeuert (Delphi Rio)
Bei solchen Dialogen passiert dieser Fehler oft, wenn nach dem Schließen der Fokus nicht an ein sichtbares Fenster übergeben werden konnte.
z.B. bei Dialogen im OnClose oder nach anderen Dialogen/Fenstern, die schonwieder zu sind. Beim Öffnen eines Dialogs/Fensters wird das Handle des aktiven Fensters/Delphi-Dialogs gespeichert und nach dem Schließen fokusiert, aber wenn es Dieses Fenster nicht mehr gibt, dann... Hat kein Fenster mehr den Fokus, dann geht die Kontrolle ans vorherrige Programm über. Versuch mal explizit das gewünschte Fenster anzugeben.
Delphi-Quellcode:
FindDialog1.Execute(Self.Handle); // oder Application.MainFormHandle
Achtung: Bei manchen Dialogen kann man im Execute zwar ein Handle rein geben, aber der Parameter er wird dann "ignoriert", was beim TFindDialog aber gehen sollte. |
AW: TFindDialog wird OnClose nicht gefeuert (Delphi Rio)
funktioniert leider nicht!
Ciao Stefan |
AW: TFindDialog wird OnClose nicht gefeuert (Delphi Rio)
Delphi-Quellcode:
Versuch mal VCL-Styles zu benutzen ... scheinbar funktioniert das OnClose nicht bei nativen Dialogen. :roll:
procedure TCommonDialog.WMDestroy(var Message: TWMDestroy);
begin inherited; DoClose; end; procedure TCommonDialog.WndProc(var Message: TMessage); begin if Message.Msg = WM_STYLEDLGDESTROY then begin DoClose; Exit; end; ... destructor TSysDialogStyleHook.Destroy; begin if Application.DialogHandle = Handle then begin Application.DialogHandle := 0; SendMessage(Handle, WM_STYLEDLGDESTROY, 0, 0); end; Neee, das scheint niemals zu funktionieren und müsste eher OnDestroy heißen. |
AW: TFindDialog wird OnClose nicht gefeuert (Delphi Rio)
Leider auch nicht, denn der Dialog soll beim schließen nicht zerstört werden sondern beim nächsten Aufruf dann noch die letzten Inhalte (Suchen nach / vorwärts / rückwärts etc behalten...
Ciao Stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:06 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