加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 09:08:53 所属栏目:大数据 来源:网络整理
导读:我有一个框架和一些控件(编辑,按钮等).如何拦截在帧控件上任意位置按ENTER键并转换为TAB键(考虑SHIFT状态)? 解决方法 下面是一些示例代码,用于处理框架上的消息,以便在按下Enter时能够导航到下一个控件.请注意,此示例不会修改Enter键以成为Tab键.相反,它选
我有一个框架和一些控件(编辑,按钮等).如何拦截在帧控件上任意位置按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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读