在 Delphi XE2 中,我的应用程序中有一个数据模块,并且该数据模块内有一个操作管理器。我已为每个操作分配了键盘快捷键,但当我尝试在应用程序中使用这些快捷键时,它无法捕获它们。
我正在应用程序的初始化中创建数据模块(由于 IDE 扭曲了项目主文件中的代码,该模块已移动到不同的单元)...
unit AppInit;
interface
uses
Vcl.Forms,
Vcl.Themes,
Vcl.Styles,
uMain,
uDataModule
;
procedure RunApp;
implementation
procedure RunApp;
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.Title := 'My App';
TStyleManager.TrySetStyle('Carbon');
DM:= TDM.Create(nil);
try
Application.CreateForm(TfrmMain, frmMain);
Application.Run;
finally
DM.Free;
end;
end;
end.
像这样创建数据模块的原因是应用程序的所有各种形式都能够使用其中的组件,特别是操作管理器。它必须在创建主窗体之前创建。
当操作管理器位于数据模块中时,如何使操作项的键盘快捷键起作用?
最佳答案
TDataModule
不是 TCustomForm
的后代,而是 TComponent
的后代。因此,数据模块没有用于接收消息的窗口句柄,并且没有对诸如 TCustomForm
之类的快捷方式的处理。
function TCustomForm.IsShortCut(var Message: TWMKey): Boolean;
function DispatchShortCut(const Owner: TComponent) : Boolean;
.....
.....
关于delphi - 当操作管理器位于数据模块中时,键盘快捷键未捕获?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14099865/