1

Delphi XE2 アプリケーションがあります。Form1ホットキーCtrl+ F、およびForm2があり、ホットキーなしでアクティブです。Ctrlユーザーは+Fを押してホットキーForm2を処理します。Form1非アクティブなフォームのアクティビティが表示されるため、これはまったく正しくありません。どうすれば修正できますか?

4

3 に答える 3

6

アクションを使用してすべてのショートカット キー処理を実装します。これを行うと、アクション、アクション リスト、アクション マネージャーなどが提供する一元化を使用して、フォームがアクティブかどうかに基づいてすべてのアクションを有効または無効にすることができます。

たとえば、フォームのおよびイベント ハンドラーでアクション リストのStateプロパティを設定することにより、これを行います。OnActivateOnDeactivate

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

アクティブなフォームのチェックをホットキー ハンドラーに追加できます。

if(Screen.ActiveForm <> Self)then Exit;

Form1これは、イベントハンドラーが (ハンドラー内にある)によって実装されていることを前提としていSelfます。

于 2013-03-29T13:15:08.253 に答える