我有一个框架和一些控件(编辑,按钮等).如何拦截在帧控件上任意位置按ENTER键并转换为TAB键(考虑SHIFT状态)? 下面是一些示例代码,用于处理框架上的消息,以便在按下Enter时能够导航到下
另请注意,代码可能需要进一步调整.一个用于,如果任何控件实际需要处理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;