use*_*348 3 delphi alt-key delphi-xe2
例如,当光标位于“编辑”字段中时,按下并释放Alt键(而不按其他任何键)会导致“编辑”字段失去焦点。任何其他集中控制也会发生这种情况。对于任何集中控制,如何在Delphi程序中防止这种情况发生?
一个更好的方法来减少意外的后果是要非常精确-我建议:
在您的表单中,重写WndProc:
TForm1 = class(TForm)
Edit1: TEdit;
private
FSuppress : boolean;
protected
procedure WndProc(var Message : TMessage); override;
end;
Run Code Online (Sandbox Code Playgroud)
像这样实现:
procedure TForm1.WndProc(var Message : TMessage);
begin
if (Message.Msg = WM_SYSCOMMAND) and
(Message.WParam = SC_KEYMENU) and
FSuppress then Exit;
inherited WndProc(Message);
end;
Run Code Online (Sandbox Code Playgroud)
这是系统命令和特定WParam的Windows消息,指示该消息用于检索由击键触发的菜单。设置FSuppress您希望保持关注的任何控件:
procedure TForm1.Edit1Enter(Sender: TObject);
begin
FSuppress := true;
end;
procedure TForm1.Edit1Exit(Sender: TObject);
begin
FSuppress := false;
end;
Run Code Online (Sandbox Code Playgroud)
这不会禁用ALT键,但是会特别禁用在Edit1焦点对准时菜单的激活。至关重要的是,ALT + F4退出程序或ALT+TAB切换窗口之类的快捷方式仍然可以使用。
但是,我同意大多数意见,因为这可能不是针对用户群LCD的最佳解决方案。您实际上是在削弱该计划,让有能力的用户顺应那些无能的用户的失败。也许使它成为Windows粘滞键之类的选项,或为各种残障人士提供的辅助功能选项。
| 归档时间: |
|
| 查看次数: |
1629 次 |
| 最近记录: |