MENUのショートカットキーがきかないのですが・・・


ちらつき防止隊員  2006-04-06 04:20:41  No: 20858

質問の通りなんですが、メインメニューのショートカットキーを指定しているのですがそれだけだと、キーボードからの入力は受け付けないのですか?


HOta  2006-04-06 05:51:00  No: 20859

問題なく受け付けます。


ちらつき防止隊員  2006-04-10 03:21:55  No: 20860

どうしても解決できません。
メニューのショートカットキーがある場合、フォーム上でのキーボード入力はどのコントロールにフォーカスがあってもメニューに付したイベントを行うのでしょうか?


igy  2006-04-10 04:23:10  No: 20861

以下のように試したところ、ショートカットキーはちゃんと効いています。

・Delphi5 IDE メニュー「ファイル」-「新規作成」で、
  「プロジェクト」タブの「SDIアプリケーション」を選択し、OK。

・FileMenu1のOnExecuteイベントがすでに存在するので、MessageDlgを記述。

procedure TSDIAppForm.FileNew1Execute(Sender: TObject);
begin
  MessageDlg('新規作成が選択されました。', mtInformation, [mbOk], 0);
end;

・コンパイル・実行し、Ctrl+NでMessageDlgが表示されます。

ちらつき防止隊員 さんのプログラムでは、具体的にはどのようなことをしている
のですか?


ちらつき防止隊員  2006-04-10 08:39:04  No: 20862

お世話になります。
>具体的にはどのようなことをしている
他のフォームを表示させるだけです。

begin
   form2.show;
end;

ただ、エクスプローラ風にするために、ツールバーのメニュープロパティを使っていますが、そんことは関係ないっすよね。。。


igy  2006-04-10 17:49:23  No: 20863

最初の質問で

>メインメニューのショートカットキーを指定しているのですが

とあったので、TMainMenuコンポーネントに追加したメニュー項目TMenuItemの
ShortCutプロパティにCtrl+Nなど指定しているのかと思っていたのですが、

>ただ、エクスプローラ風にするために、ツールバーのメニュープロパティを使っていますが

具体的には、どのコンポーネントの何というプロパティでショートカットを指定しているのですか?


ちらつき防止隊員  2006-04-13 05:04:31  No: 20864

すいません。
コントロールバーの上にツールバーを置いています。メニュープロパティではありませんでしたが、TMENU型のプロパティですので、MENUと変わらないと思います。
ショートカットはメニューのショートカットプロパティです。
フリーコンポーネントのXPMENUを使っていますが、それは関係無いと思います。


Fusa  2006-04-13 06:04:51  No: 20865

何が問題かわかりづらいので
TActionを使ったほうがいいでしょう。


igy  2006-04-13 06:33:45  No: 20866

ちなみに、以下の4パターンで、ショートカットは効きますか?

(メニュー項目のOnClickイベントでは、MessageDlgなどを表示させるようにして。)

・新規プロジェクトでTMainMenuでメニュー項目を追加し、
  ショートカットを設定した場合。
・新規プロジェクトでTMainMenuでメニュー項目を追加し、
  ショートカットを設定し、TControlBar, TToolBarを組み合わせた場合。
・新規プロジェクトでXPMENUでメニュー項目を追加し、
  ショートカットを設定した場合。
・新規プロジェクトでXPMENUでメニュー項目を追加し、
  ショートカットを設定し、TControlBar, TToolBarを組み合わせた場合。


ちらつき防止隊員  2006-04-15 20:13:07  No: 20867

お世話になります。
igyさんのパターン早速試させていただきます。
>何が問題かわかりづらいので
おっしゃる通りです。将来自己解決の可能性が…。ご迷惑おかけします。

ただ、新たな問題は見つかりました。Teditorにフォーカスを移した場合、「del」キーがきかないんです。MEMOコンポーネントやTeditではまだ、試していないのですが…。こんなことってあるんですか?


HOta  2006-04-15 23:23:44  No: 20868

TActionで設定した物を、メニューバーに設定すれば問題ありません。


ちらつき防止隊員  2006-04-21 05:21:10  No: 20869

やっぱりショートカットきかないです。
新規フォームで
Ctl+A
がきかなかったです。他のショートカットは効くのですが。
もとより、最初からつくっていたアプリでは無理です。すいません。
Teditorの「Del」キーのことはショートカットのことと何か関係があると思って投稿しただけです。
ただ、これは何が変わったか知りませんが、突然できるようになりました。
Delphi自体が壊れているのかしら・・・


igy  2006-04-21 05:55:01  No: 20870

>やっぱりショートカットきかないです。
>新規フォームで
>Ctl+A
>がきかなかったです。

これは、以前、提案した

>・新規プロジェクトでTMainMenuでメニュー項目を追加し、
>  ショートカットを設定した場合。
>・新規プロジェクトでTMainMenuでメニュー項目を追加し、
>  ショートカットを設定し、TControlBar, TToolBarを組み合わせた場合。
>・新規プロジェクトでXPMENUでメニュー項目を追加し、
>  ショートカットを設定した場合。
>・新規プロジェクトでXPMENUでメニュー項目を追加し、
>  ショートカットを設定し、TControlBar, TToolBarを組み合わせた場合。

で試したものですか?
(試したのであれば、4パターンそれぞれの結果も知りたいです。)

>他のショートカットは効くのですが。

具体的には、どのショートカットが効いたのですか?


igy  2006-04-21 08:05:39  No: 20871

ちなみに、他のアプリケーションでCtrl+Aは効きます?
(たとえば、ワードなどの場合、Ctrl+Aで、「すべて選択」は実行されます?)


  2006-05-17 08:59:11  No: 20872

・他の常駐アプリに、Ctl+Aが割り当てられていないでしょうか?
・それとも、フォームのKeyPreviewがfalseで、アクティブコントロールのショートカットキーが反応しているとか…


ちらつき防止隊員  2006-05-18 05:21:19  No: 20873

すいません。返信がかなり遅れてしまいました。
それからみなさんありがとうございます。
>で試したものですか?
>試したのであれば、4パターンそれぞれの結果も知りたいです。)
基本的に新規プロジェクトでは問題無く動きます。
>・他の常駐アプリに、Ctl+Aが割り当てられていないでしょうか?
>・それとも、フォームのKeyPreviewがfalseで、アクティブコントロールのショートカットキーが反応しているとか…
それも確かめましたがどうもそうでもないらしいです。他アプリケーションのCtl+Aは動きます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加