†Sibylのお部屋†
【Sibyl】メインメニューとポップアップメニュー
作成開始日 2002.11.29
最終更新日 2022.01.22
SibylのMainMenu/PopupMenuオブジェクトを使用する際の注意点は5つ。
- メニューエディタの使い方が非常に判りにくい;PopupMenuは要ダブルクリック。
- トップメニューはアクセラレーション(Alt+)、サブメニューはショートカット(Ctrl+)で。
- ショートカットキーではメインメニューは開けない;PopupMenuで代用。
- メニュー項目の設定はMainMenu/PopupMenuではなく、各MenuItemオブジェクトで行う。
- FixPack4を適用すると、メニュー系のユニットはFormsからMenusに変更される。
キー操作の問題
私はキーボード操作を好むのだが、MainMenuの仕様ではキー操作が限定される。トップメニューの項目は「Alt−英字」のシークエンスで、サブメニューの項目は「Ctrl+英字」のショートカットを使ってアクセスしなくてはならない。しかも、ショートカットキーは、メニューを開かずに直接機能を実行してしまう。すなわち、
[Alt]キーのシークエンスなしにメインメニューを開くことができない
のである。言い換えると、1キーでメニューを開くことができない。それがPMやWindowsの流儀なので仕方ないし、実害があるわけでもない。しかし、DOSプログラムとユーザーインターフェースの互換性を取りたい時には不便。ということで、実は私はこのMainMenuをけっこう嫌っていて、PanelやRadioGroupを使って、独自のメニューを作っていたのだが…
実は、そんなことをしなくても、
PopupMenuを使えば任意キーでメニューを開くことができる
たとえば、[F]キーを押したときにメニューを表示したければ、OnKeyPressハンドラの中で次のようにすれば良い。
if Key='f' then PopupMenu1.Popup(x,y);
メニューエディタの操作
メインメニューは、コントロールをフォームに置くだけで、最上部にメニューバーが表示される。これがメニューエディタとなる。しかし、ポップアップメニューはコントロールをフォーム上に置いただけでは何も表示されない。メニューエディタを表示するには、PopupMenuコントロールをダブルクリックする。
メニューエディタでは、カーソルキーを操作して位置を決め、以下のキーで編集する。使い方がどこにも書いていないので、とても困ったのだが、試行錯誤で何とか判った。
キー操作 | 機能
|
BackSpade | 一文字削除
|
Delete | 一項目削除
|
Insert | 一項目挿入
|
Tab | レベル間の移動
|
Esc | 最上位レベルの項目の編集※
|
~ | 次の文字がアクセラレーション・キー
|
※最上位のレベルの項目の編集をする方法はもう一つある。メニュー右端の新規項目(……)をクリックして、[←]キーで目的の項目に移動して上記キーで編集する。
【注意】
- メニューのShortCutプロパティ(AltではなくCtrlでのショートカット)は、最上位の項目に対しては使用できない。その項目は実行されるが、メニューは表示されない。
- 最上位の項目にはイベントハンドラが上手くくっつかないことがある。イベントハンドラ名がMenuItemOnClikかMenuItem1OnClickかに注意。OnClickの前に数字がつかないとダメみたい。
【Sibylのお部屋目次】
【ホーム】