プルダウンメニューを使ってみましょう(MNU_Framework の使い方)。
                 * 本当はポップメニューなのですが ( ^)o(^ )

メニューのセッティングは簡単です。
コマンドボタンを準備しておいて、その名前(オブジェクト名)を @ をつけて記載するだけです。
* 一般手続きも 記載できますが、ここではコマンドボタンの登録のみを紹介します。
* フォームには事前にファミリパレットを開いて famMNU を作成しておきます。

次の画像をご覧になってください。
イベントファイルの &メニュー名[1]、&選択肢List[1]、&機能名List[1]、&幅の調整値[1] に記載された内容がフォームに反映されています。

仕切り線を表示するための "選択肢List" と "機能名List" の記載方法
 "cmd一覧表印刷"と"cmdレポート印刷" のコマンドボタンがフォームのワークスペースに置かれているため画面に表示されていないことをご確認ください。


それでは ”新メニューの練習” を使用して順を追って説明していきたいと思います。
( 以下、桐10にコンバートした場合には 拡張子を wfm → wfx ,kev → kex に読み替えてご覧になってください)。

”新メニューの練習” では『練習』のために動作しない設定もあります。

まず ”新メニューの練習.wfm” をクリックして開いてください。
使用できないコマンドボタンは 『使用不可表示』となっています(ボタンが使用できない状態、またボタンが存在しない)。

次に ”新メニューの練習.wfm” を再定義で開いてください(桐10にコンバートしている場合は wfm を wfx に読み替えてください)。

ここではメニュー表示のラベルオブジェクト(薄い青色ですね)4個がフォームのヘッダ部分に置かれ、残りがワークスペースに配置されています。
またワークスペースには右側に練習用サンプルとして5個のコマンドボタンが準備されています。
*上部には INF_Frameworkで準備されているコマンドボタンが配置されています。
 後で紹介する MNU_エディタ ではフォームに登録されているボタン全部が一覧表示されます。

次の画像は、ファミリパレットで fmMNU が登録されていることを確認しています。
* また他の ファミリオブジェクトも削除しないようにしてください。便利な INF_Framework で使われる fam が登録されています。
 なお IPS_Framework + INF_Framework のライブラリは MNU_Framework を使用するのに必須です。

 

次にイベントを見てみましょう。

ここでは 5行目の  *---------- begin MNU_Framework 名札 メイン ---------------* 

から  44行目の  *---------- end MNU_Framework 名札 メイン -----------------*

までが MNU_Framework のライブラリを使用するための記載になります。
ほかのフォームでメニューを使うには、この部分をコピーしましょう。
* また  IPS_Framework + INF_Framework の記載は
 46行目の **---------- <begin 標準 IPS+INF_Framework> ---------------**
 からとなっています。この部分も必要ですね。コピーすることになりますね。

またメニューにコマンドボタンを登録する記載部分が、この ”新メニューの練習.kev(kex)”では 324行目からになっています。

この ”新メニューの練習.kev” では、『練習』のために登録されていないコマンドボタン名が記載されています。
最初にフォームを開いて確認した通りですね(使用不可表示となります)。

また ”&幅の調整値[1]” が重複記載されていますが([2]~[4]も同様)、重複した分は後述記載分が有効になります。
さらには ”&メニュー名[1] ~ &幅の調整値[1]” ([2]~[4]も同様)の一連のセット自体も後述記載分が有効になることがわかります。
* ”新メニューの練習.kev” の261行目~281行目と 323行目~347行目が重複記載されています。

不要な分を編集(削除)すればこの解説のトップ画像のようなシンプルな記載とフォーム側でのメニュー表示となります。



メニュー項目は12、各メニューに登録できるコマンドは 仕切り線 と合わせて20個です(合計240個)。

12のメニュー項目をフォーム上にすべて表示させると次のようになります。

ラベルオブジェクトをフォームのヘッダ部分にすべて置いています(メニュー5~12までの置き方がきれいに並んでいませんが、大丈夫です。MNU_Framework がきちんと並べてくれます)。


MNUエディタ について

メニューの登録はコードは手入力で記載してよいのですがそれなりに面倒くさいので便利なユーティリティが提供されています。
メニューのタイトルや登録するコマンドボタン、幅などを調整したあと実際の画面を使ってプレビューできます。
* なおソースコードを自動で更新する機能はないので、[保存]ボタンを使ってテキストファイルに書き出します

次の画像は ”MNU_エディタ.wfm” を使って ”新メニューの練習”のメニューを編集しているところです。
画像では読み込んだメニューデータに記載されているコマンドボタン(画像では @cmdズームイン) が存在しないことがわかります。
* ここでは 読み込んだ登録済みの    [機能名] ”@cmdズームイン” を ”EZWcomズームイン” に変更(一覧から選択)すれば、[選択肢]に一致する機能のコマンドボタンを設定することができます。

保存するとテキストファイルにソースコードが出力されます。
一般手続きの
手続き定義開始 MNUprcStartup( 参照 文字列 &objectList, 参照 **以下省略 ) の
該当部分(行)と置き換えてください。


次の画像はMNU_エディタで出力された、この解説のトップに掲載している画像に対応するソースコードになります。

イベントファイルの該当部分を置き換えると次のような記載になります(この解説のトップ画像ですね)。
* 以下のサンプル画像では "無題"、"選択肢リストが空です__" も手作業で空白にした例となります。
* また MNU_Framework に同梱されている
 "15パズル.kev" の "手続き定義開始 MNUprcStartup( 参照 文字列 &objectList・・・ 以下略" も参考にしてみてください。

それでは簡単便利な MNU_Framework ( IPS_Framework + INF_Framework が必要です )を使って自由度の高いフォームを作成してください。

なおこの ”新メニューの練習フォーム” ですが、項目幅が変えられたり項目名をクリックするとソートできたりします。それは INF_Framework で提供されている機能の一部です。

by Sai 2018