Mas*_*ler 5 delphi focus custom-controls component-design
我已经构建了一个自定义控件,我正在尝试将输入发送到.它将接受鼠标输入并正确报告MouseDown,MouseMove和MouseUp,但无论出于何种原因,它都不接受键盘输入.当我点击它时,它没有得到焦点,我按下的任何键都被任何具有焦点的控件解释.
这可能非常简单.我想看的第一个地方是在ControlStyle属性中,但我在帮助文件中看到的关于键盘输入的唯一内容是csNoStdEvents禁用它,而我的控件没有.那么我需要做些什么才能让我的控件能够获得输入焦点?
一些事情要尝试:
MouseDown,调用Windows.SetFocus(Handle).根据我的经验,WinAPI函数SetFocus通常比VCL的SetFocus方法更好.WM_GETDLGCODE消息时,回复Message.Result := Message.Result or DLGC_WANTCHARS or DLGC_WANTARROWS or DLGC_WANTTAB or DLGC_WANTALLKEYS;是否可以像在鼠标按下时调用 SetFocus 一样简单?
procedure TYourCustomControl.MouseDown(Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
inherited;
if CanFocus then
SetFocus;
end;
Run Code Online (Sandbox Code Playgroud)