5,388
社区成员
发帖
与我相关
我的任务
分享
新建一个工程,窗口属性 KeyPreview =True, 然后在 FormKeyPress 里写 if key = #27 then Application.Terminate;
问题:
当窗口 FormStyle 属性为 fsNormal 时,运行程序,按ESC 键,窗口是可以关闭的。
但当 FormStyle 属性为 fsMDIForm 时,运行程序,按ESC ,窗口没反应。感觉没接收到 ESC键
请大神指点
SDI 窗口程序的消息循环可以由 Application.MainForm 处理,而 MDI 窗口程序似乎是由 Application 来处理的(不确定)。
可以不管 FormStyle,在窗体上添加一个 TApplicationEvents组件(在 Additional 页上),处理它的 OnMessage 事件。
uses
..., Winapi.Windows, ...
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
begin
case Msg.message of
WM_KEYUP: begin
if Msg.wParam = VK_ESCAPE then begin
...
end;
end;
end;
end;