Vielen Dank an alle die sich hier meinem Problem angenommen haben.
An Lannes:
Ich habe deinen Quellcode ausprobiert.
Funktioniert einwandfrei und wäre eine denkbare Lösung für mich.
Da ich aber damit ein grundsätzliches Problem habe und ich nicht
in allen Projekten vorher diesen Quellcode übernehmen möchte,
habe ich mich für eine andere Lösung entschieden.
Ich habe aus der TCheckbox meine eigene Komponente gemacht.
Die Lösung ist ganz einfach:
Delphi-Quellcode:
unit syCheckBox;
interface
uses
SysUtils, Classes, Controls, StdCtrls, Windows, Messages;
type
TsyCheckBox =
class(TCheckBox)
private
procedure WMGETDLGCODE(
var msg : TWMGetDlgCode);
message WM_GETDLGCODE;
protected
public
published
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('
MeineKomponenten', [TsyCheckBox]);
end;
{ TsyCheckBox }
procedure TsyCheckBox.WMGETDLGCODE(
var msg: TWMGetDlgCode);
begin
msg.Result := msg.Result
or DLGC_WANTARROWS;
end;
end.
Damit kann ich ganz normal die KeyDown und KeyUp Ereignisse abfragen und es wird kein anderes Control fokusiert.
Vorsicht: KeyPress funktioniert damit nicht.