当前位置 : 主页 > 编程语言 > delphi >

Delphi:如何使ENTER键在TFrame中用作TAB键

来源:互联网 收集:自由互联 发布时间:2021-06-23
我有一个框架和一些控件(编辑,按钮等).如何拦截在帧控件上任意位置按ENTER键并转换为TAB键(考虑SHIFT状态)? 下面是一些示例代码,用于处理框架上的消息,以便在按下Enter时能够导航到下
我有一个框架和一些控件(编辑,按钮等).如何拦截在帧控件上任意位置按ENTER键并转换为TAB键(考虑SHIFT状态)? 下面是一些示例代码,用于处理框架上的消息,以便在按下Enter时能够导航到下一个控件.请注意,此示例不会修改Enter键以成为Tab键.相反,它选择下一个控件并阻止进一步处理按键消息.

另请注意,代码可能需要进一步调整.一个用于,如果任何控件实际需要处理Enter键,例如TMemo,则需要添加异常.其次,导航被包裹在帧中,即在最后一帧控制之后,第一帧控制被聚焦 – 不是对表格的控制而不是对帧的控制.对于这些,您可能希望为消息返回添加条件,如果您希望在某些条件下进行默认处理,只需调用inherited而不执行任何其他操作.

type
  TFrame2 = class(TFrame)
    ...
  protected
    procedure CMChildKey(var Message: TCMChildKey); message CM_CHILDKEY;
  end;

..

procedure TFrame2.CMChildKey(var Message: TCMChildKey);
begin
  if Message.CharCode = VK_RETURN then begin
    SelectNext(Screen.ActiveControl, not Bool(GetKeyState(VK_SHIFT) and $80), True);
    Message.Result := 1;
  end else
    inherited;
end;
网友评论