我正在写一个基于TCustomControl的网格控件,这样我就可以自己处理所有的结构,绘画和导航。我似乎不能理解的是:
在我的构造函数中,我将ControlStyle设置为:
ControlStyle := ControlStyle + [csCaptureMouse, csClickEvents,
csDoubleClicks, csNeedsBorderPaint, csPannable];我的想法是,如果控件处理鼠标事件,我可以做一些事情,如设置选择等。但我注意到,控件永远不会收到焦点。我碰巧在表单上有一个TComboBox,在创建表单时,它显然是有焦点的。无论我在网格中点击多少次,焦点都停留在组合框上。
当然,这也会影响我对键盘事件的处理。
所以问题是,如何确定当您单击某个控件时,焦点应该转移到该控件上?
发布于 2009-09-09 10:16:56
当CustomControl被点击时,它应该会调用SetFocus。
procedure TMyCustomControl.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
inherited;
if not (csDesigning in ComponentState) and CanFocus then
SetFocus;https://stackoverflow.com/questions/1398578
复制相似问题