Tests haben ergeben das "ConnectEvents" zweimal aufgerufen wird.
Delphi-Quellcode:
writeln('OK00');
//Check for on key down event
PropInfo := GetPropInfo(Control, 'OnKeyDown');
if (FKeyDownComp = nil) and (PropInfo <> nil) then
begin
writeln('OK01');
Method := GetMethodProp(Control, PropInfo);
FOldKeyDown := TKeyEvent(Method);
PKeyEvent(@Method.Code)^ := KeyDown; Method.Data := self;
SetMethodProp(Control, PropInfo, Method);
FKeyDownComp := Control;
end;
Der Debugger geht bei mir leider nicht. Darum gehe ich diesen weg mit Writeln.
Beim ersten durchgang werden alle beide weriteln aufgerufen beim zweiten nicht mehr. Warum das so ist weiß ich noch nicht. Ich stelle weitere nach Forschungen an. Ich weiß allerdings das die Events vor einiger Zeit geklappt haben.
Edit01:
Das seltsame ist das die Procedure scheinbar zwei Mal aufgerufen wird. tue ich aber ein writeln am anfang der Procedure ConnectEvents erscheint die Meldung nur einmal. Erst wenn er bei onKeyDown ist. PropInfo scheint auch richtig gesetzt zu sein. Werde aber weiter Forschen.
Edit02: Habe übersehen das es sich um eine while schleife handelt. Also ist das verhalten hier richtig. Glaube ich.