Menu selected
Menu selected {( subMenu )} : Integer
引数 | 型 | 説明 | |
---|---|---|---|
subMenu | Text | ← | 選択された項目を含むメニューの参照 |
戻り値 | Integer | ← | 選択されたメニューコマンド 上位バイトにメニュー番号 下位バイトにメニュー項目番号 |
このコマンドはスレッドセーフではないため、プリエンプティブなコードには使えません。
説明
Menu selected はフォームが表示されているときのみ使用できます。このコマンドはメニューから選択されたメニュー項目を検出し、階層サブメニューの場合はサブメニューの参照を返します。
Tip: 可能な限り、Menu selected を使用しないで、(負のメニューバー番号を用いた) 関連メニューバーのメニューに割り当てられたメソッドを使用してください。いずれのメニューが選択されたかを調べる必要がないため、関連メニューバーはより簡単に管理できます。
Menu selected コマンドを階層サブメニューに対して使用できます。第一レベルより下の階層のメニュー項目を選択すると、コマンドはsubMenu 引数に、選択された項目が属するサブメニューの参照 (MenuRef 型, 16文字の文字列) を返します。メニューコマンドが階層サブメニューを含まない場合、この引数には空の文字列が返されます。
Menu selected コマンドは、選択されたメニューの番号を倍長整数型で返します。選択されたメニュー番号を知るためには、返された数値を65536で割り、その結果を整数型に変換します。選択されたメニューコマンド番号を知るには、係数65536を使い、返された数値のモジューロを計算します。メニュー番号とメニューコマンド番号を計算するには以下のフォーミュラを使用します:
menu:=Menu selected\ 65536
menuCommand:=Menu selected% 65536
ビットワイズ演算子 を使用してこれらの値を取得することもできます:
menu:=(Menu selected & 0xFFFF0000)>>16
menuCommand:=Menu selected & 0xFFFF
メニューが選択されていない場合、Menu selected は0を返します。
例題
以下の例はSET MENU ITEM MARK コマンドのメニューとメニュー項目引数を求めるためにMenu selected を使用しています:
Case of
:(Form event code=On Menu Selected) //v17 以前ではFrom event を使用すること
C_STRING(16;$refMenuIncludingItem)
var $ref;$MenuNum;$MenuItemNum : Integer
$ref:=Menu selected($refMenuIncludingItem)
$MenuNum:=$ref\65536
$MenuItemNum:=$ref%65536
SET MENU ITEM MARK($refMenuIncludingItem;$MenuItemNum;Char(18))
End case
Note: 項目が選択されていなければ、On Menu Selectedフォームイベントは有効にされません。メニューが、メニューバー中のメニューの一つでない場合、$refMenuIncludingItem には常に値が与えられ、$MenuNum は0となります。
参照
メニューの管理