我们有一个 Delphi XE2 应用程序。Form1
有热键Ctrl+F和Form2
,它是活动的,没有热键。用户按下Ctrl+F并处理热键Form2
。Form1
这是完全不正确的,因为我们看到了非活动形式的活动。我如何解决它?
问问题
1143 次
3 回答
6
我使用动作实现所有快捷键处理。如果您这样做,那么您可以使用操作、操作列表、操作管理器等提供的集中化来启用和禁用基于表单是否处于活动状态的所有操作。
例如,通过在表单的和事件处理程序State
上设置操作列表的属性来做到这一点:OnActivate
OnDeactivate
procedure TMyForm.FormActivate(Sender: TObject);
begin
ActionList.State := asNormal;
end;
procedure TMyForm.FormDeactivate(Sender: TObject);
begin
ActionList.State := asSuspended;
end;
于 2013-03-29T13:44:43.963 回答
2
于 2013-03-29T13:15:08.253 回答
0
只需覆盖捕获操作的非活动窗口的以下函数:
function IsShortCut(var Message: TWMKey): Boolean; override;
function TMainForm.IsShortCut(var Message: TWMKey): Boolean;
begin
if MainForm.Active then
result := inherited IsShortCut( Message )
else
result := false;
end;
于 2019-03-10T01:02:13.410 回答