AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Kein OnChange in Dynamisch erstellten TEdit auf non-vcl Form
Thema durchsuchen
Ansicht
Themen-Optionen

Kein OnChange in Dynamisch erstellten TEdit auf non-vcl Form

Ein Thema von gORDon_vdLg · begonnen am 7. Nov 2009 · letzter Beitrag vom 9. Nov 2009
Antwort Antwort
Benutzerbild von gORDon_vdLg
gORDon_vdLg

Registriert seit: 7. Nov 2009
26 Beiträge
 
Delphi XE Architect
 
#1

Kein OnChange in Dynamisch erstellten TEdit auf non-vcl Form

  Alt 7. Nov 2009, 12:18
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.
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#2

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

  Alt 7. Nov 2009, 12:33
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.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von gORDon_vdLg
gORDon_vdLg

Registriert seit: 7. Nov 2009
26 Beiträge
 
Delphi XE Architect
 
#3

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

  Alt 9. Nov 2009, 11:24
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#4

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

  Alt 9. Nov 2009, 11:38
Man könnte sich auch fragen, warum du ein VCL-Edit auf eine NonVCL-Form packen willst,
anstatt ebenfalls ein NonVCL-Edit zu nutzen?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von gORDon_vdLg
gORDon_vdLg

Registriert seit: 7. Nov 2009
26 Beiträge
 
Delphi XE Architect
 
#5

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

  Alt 9. Nov 2009, 11:44
Eigendlich nur um das mal auszuprobieren Aber du hast recht wenn ich mir die Message eh selber einfangen muss kann ich auch gleich CreateWindow benutzen.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

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

  Alt 9. Nov 2009, 11:46
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?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#7

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

  Alt 9. Nov 2009, 11:49
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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

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

  Alt 9. Nov 2009, 12:05
Zitat von himitsu:
Nja, man glaubt garnicht wieviel einem die VCL da an Arbeit abnimmt
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?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von gORDon_vdLg
gORDon_vdLg

Registriert seit: 7. Nov 2009
26 Beiträge
 
Delphi XE Architect
 
#9

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

  Alt 9. Nov 2009, 12:37
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:11 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