Delphi-PRAXiS

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 Kein OnChange in Dynamisch erstellten TEdit auf non-vcl Form (https://www.delphipraxis.net/142990-kein-onchange-dynamisch-erstellten-tedit-auf-non-vcl-form.html)

gORDon_vdLg 7. Nov 2009 12:18


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.

Apollonius 7. Nov 2009 12:33

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.

gORDon_vdLg 9. Nov 2009 11:24

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.

himitsu 9. Nov 2009 11:38

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?

gORDon_vdLg 9. Nov 2009 11:44

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.

Luckie 9. Nov 2009 11:46

Re: Kein OnChange in Dynamisch erstellten TEdit auf non-vcl
 
Zitat:

Zitat von himitsu
Man könnte sich auch fragen, warum du ein VCL-Edit auf eine NonVCL-Form packen willst,
anstatt ebenfalls ein NonVCL-Edit zu nutzen?

Generell ist es nämlich keine gute Idee VCL und "nonVCL" zu mischen. Oder kann es sein, dass du den Begriff "nonVCL" im falschen Zusammenhang benutzt und du doch die VCL für das Formular verwendest?

himitsu 9. Nov 2009 11:49

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:

Luckie 9. Nov 2009 12:05

Re: Kein OnChange in Dynamisch erstellten TEdit auf non-vcl
 
Zitat:

Zitat von himitsu
Nja, man glaubt garnicht wieviel einem die VCL da an Arbeit abnimmt :shock:

Oder vor einem versteckt. Aber wenn dann mal was nicht funktioniert wie es soll, überlegt man: Liegt es an der VCL? Und wenn ja, ist es Absicht oder ein Fehler?

gORDon_vdLg 9. Nov 2009 12:37

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 03:46 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