1

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.

このように Data Module を作成する理由は、さまざまな形式のアプリケーションがその中のコンポーネント、特に Action Manager を使用できるようにするためです。メインフォームを作成する前に作成する必要があります。

アクション マネージャーがデータ モジュールにある場合、アクション アイテムのキーボード ショートカットを機能させるにはどうすればよいですか?

4

1 に答える 1

5

TDataModuleの子孫ではなく、の子孫TCustomFormですTComponent。したがって、データモジュールにはメッセージを受信するためのウィンドウハンドルがなく、のようなショートカットの処理もありませんTCustomForm

function TCustomForm.IsShortCut(var Message: TWMKey): Boolean;

  function DispatchShortCut(const Owner: TComponent) : Boolean;
  .....
  .....
于 2012-12-31T13:17:32.647 に答える