![]() |
Kein OnChange in Dynamisch erstellten TEdit auf non-vcl Form
Also ich habe folgende Situation:
Ich erstelle ein TEdit mit TEdit.CreateParented auf einer Form die zu dem Programm gehört das meine Dll Läd. Dann weise ich ein OnChange zu. Also ungefähr so: Edit:=TEdit.CreateParented(FensterHandle); Edit.OnChange:=MeineMethode; Das OnChange wird beim laden der Dll ein Mal ausgeführt, aber wenn ich im Edit herumtippe wird es nicht ausgelöst obwohl das eigendlich passieren sollte. Wenn ich testweise die Methode auf OnClick statt auf OnChange wird sie ausgeführt wie sie soll wenn ich drauf klicke. Also denke ich das beim zuweisen der Methode schon mal nichts schief läuft. Nur mit dem OnChange will es nicht. Weiß jemand Rat? Hab ich evtl. etwas vergessen das ich hätte beachten müssen? Schon mal Danke im vorraus ;) PS: Ich verwende die Testversion von Delphi 2010. |
Re: Kein OnChange in Dynamisch erstellten TEdit auf non-vcl
Das TEdit verwendet intern das Windows-Edit-Control. Dieses sendet die Change-Nachrichten (als WM_COMMAND mit dem Code EN_CHANGE) an das Eltern-Fenster. In der VCL sind alle Controls darauf ausgelegt, solche Eltern-Nachrichten (WM_COMMAND und WM_NOTIFY) zurück an das sendende Control zu schicken, damit dieses die Nachrichten selbst behandeln kann. Dein Eltern-Control macht das aber nicht; daher erhält das TEdit keine Benachrichtigung.
|
Re: Kein OnChange in Dynamisch erstellten TEdit auf non-vcl
Danke, ich werd mal versuchen mit get bzw. setwindowlong die wndproc des Parents umzuleiten um die Message selber abzufangen. Wundert mich nur grad das das OnClick trotzdem geht weil das landet ja eigendlich auch beim Parent.
|
Re: Kein OnChange in Dynamisch erstellten TEdit auf non-vcl
Man könnte sich auch fragen, warum du ein VCL-Edit auf eine NonVCL-Form packen willst,
anstatt ebenfalls ein NonVCL-Edit zu nutzen? |
Re: Kein OnChange in Dynamisch erstellten TEdit auf non-vcl
Eigendlich nur um das mal auszuprobieren :D Aber du hast recht wenn ich mir die Message eh selber einfangen muss kann ich auch gleich CreateWindow benutzen.
|
Re: Kein OnChange in Dynamisch erstellten TEdit auf non-vcl
Zitat:
|
Re: Kein OnChange in Dynamisch erstellten TEdit auf non-vcl
Das mit den VCL-Messages ist nicht ganz einfach selber zu machen.
Hab ich leider schon erleben müssen, als ich mal ein NonVCL Edit auf eine VCL-Form legen wollte. (damals für Unicode in Delphi 7) Nja, man glaubt garnicht wieviel einem die VCL da an Arbeit abnimmt :shock: |
Re: Kein OnChange in Dynamisch erstellten TEdit auf non-vcl
Zitat:
|
Re: Kein OnChange in Dynamisch erstellten TEdit auf non-vcl
Es funktioniert jetzt, ich habe jetzt ein Edit per winapi erstellt und die WndProc vom Parent gehookt damit ich auf die Message reagieren kann. Funktioniert problemlos, danke an alle ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:07 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 by Thomas Breitkreuz