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


ちらつき防止隊員  2006-04-05 19:20:41  No: 20858  IP: 192.*.*.*

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

編集 削除
HOta  2006-04-05 20:51:00  No: 20859  IP: 192.*.*.*

問題なく受け付けます。

編集 削除
ちらつき防止隊員  2006-04-09 18:21:55  No: 20860  IP: 192.*.*.*

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

編集 削除
igy  2006-04-09 19:23:10  No: 20861  IP: 192.*.*.*

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

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

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

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

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



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

編集 削除
ちらつき防止隊員  2006-04-09 23:39:04  No: 20862  IP: 192.*.*.*

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

begin
   form2.show;
end;

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

編集 削除
igy  2006-04-10 08:49:23  No: 20863  IP: 192.*.*.*

最初の質問で

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

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

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

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

編集 削除
ちらつき防止隊員  2006-04-12 20:04:31  No: 20864  IP: 192.*.*.*

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

編集 削除
Fusa  2006-04-12 21:04:51  No: 20865  IP: 192.*.*.*

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

編集 削除
igy  2006-04-12 21:33:45  No: 20866  IP: 192.*.*.*

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

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

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

編集 削除
ちらつき防止隊員  2006-04-15 11:13:07  No: 20867  IP: 192.*.*.*

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

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

編集 削除
HOta  2006-04-15 14:23:44  No: 20868  IP: 192.*.*.*

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

編集 削除
ちらつき防止隊員  2006-04-20 20:21:10  No: 20869  IP: 192.*.*.*

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

編集 削除
igy  2006-04-20 20:55:01  No: 20870  IP: 192.*.*.*

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

これは、以前、提案した

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

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

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

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

編集 削除
igy  2006-04-20 23:05:39  No: 20871  IP: 192.*.*.*

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

編集 削除
 2006-05-16 23:59:11  No: 20872  IP: 192.*.*.*

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

編集 削除
ちらつき防止隊員  2006-05-17 20:21:19  No: 20873  IP: 192.*.*.*

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

編集 削除