Moin, Moin.
Habe das Thema notgedrungen heute noch einmal anfassen müssen - und konnte feststellen, dass folgende Lösung möglich ist: Der Lösungsansatz wie er von SirThornberry in #7 beschrieben wurde, hat funktioniert - leider konnte ich aber keinen passenden Ort für den Ausdruck ActiveControl:=nil finden. Nun meinte ich ihn gefunden zu haben:
Als erste Zeile im OnKeyPressed eingesetzt funktioniert es wie erwartet! Leider mit einem negativen Nebeneffekt: Damit verliert natürlich das vorher aktive Control den Focus. Nun, dachte ich, dann speichere/restauriere es. Das führte zu folgendem Konstrukt:
Delphi-Quellcode:
procedure Tfo~.FormKeyDown(Sender:TObject;var Key:Word;Shift:TShiftState);
var TmpActiveControl : TWinControl;
begin
TmpActiveControl:=ActiveControl;
ActiveControl:=nil;
case Key of
vk_Left : showmessage('left');
//..
end;
ActiveControl:=TmpActiveControl; // damit geht's nicht?!
end;
Das Ergebnis ist nun leider wieder so, dass es nicht mehr funktioniert. Und das irritiert mich gewaltig. Obwohl die case()-Auswertung ja vor dem Restaurieren erfolgt, hat das ActiveControl:=nil nun keinen Effekt mehr. Wird die letzte Zeile auskommentiert, werden die Pfeiltasten wieder erkannt. Komisch ....