Man könnte ja nachschauen wie das bei anderen Controls funktioniert ... z.B. bei
TButton
Delphi-Quellcode:
procedure TButtonControl.WndProc(
var Message: TMessage);
begin
case Message.Msg
of
WM_LBUTTONDOWN, WM_LBUTTONDBLCLK:
if not (csDesigning
in ComponentState)
and not Focused
then
begin
FClicksDisabled := True;
Winapi.Windows.SetFocus(
Handle);
// das setzt den Focus
FClicksDisabled := False;
if not Focused
then Exit;
end;
CN_COMMAND:
if FClicksDisabled
then Exit;
end;
inherited WndProc(
Message);
end;
Danke, das scheint schon mal zu funktionieren. Beim Klick auf meine Komponente wird o.g. procedure ausgeführt. Beim erneuten KLick ebenfalls, doch nun ist Focused True.
Jetzt sollten alle KeyPress-Ereignisse auch an meine Komponente gehen (Form keyPreview = False).
Tun sie auch
bis auf Pfeiltasten VK_Left, VK_Right, VK_Top und VK_Down. Diese aktivieren sofort das nächste bzw. vohergehende Control. Aber genau diese Tasten benötige.
Wie gesagt, wenn ich mit dem Tabulator zu meinem Control navigiere, kommen diese Tasten jedoch an.