プルダウンメニュー
(MNU_Framework)

   
INF_Framework は ONnoji さん作成のフリーのライブラリです
フォームに便利な機能を追加してくれます。
ここで使用する ライブラリ は所定のサイト からダウンロードしてください。
※ INF_Framework_第3.3版_改訂版(MkII) サンプル集 for 桐9-2012 / 桐9s / 桐10 / 桐10s / 桐sSL
※ 桐10 / 桐10s / 桐sSL で使用するには、ファイルのコンバートが必要です。
更新日:2022年9月25日

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


目次

1.まずはダウンロード&解凍したフォルダに含まれる フォーム "新メニューの練習" を見ていきましょう

2.メニューへの登録 (セットアップ、"MNU_エディタ" のご紹介)

3.クラッシックINF_Framework に MNU_Framework を適用する。


1.まずはダウンロード&解凍したフォルダに含まれる フォーム "新メニューの練習.wfx" を見ていきましょう。

※このサンプル ” 新メニューの練習 ” は モダンINF_Framework に MNU_Framework を適用したものです。

1‐1..
それでは フォーム ”新メニューの練習” を起動してみてください。マウスで ファイル(F) をクリックすると次のようになります。
 

  プルダウンメニュー 、、、いいですね~。仕掛けが大きな(またいろんな要素がある)システムに適用すればとっても便利ですよね。
1‐2..
定義画面からいくつかの設定を確認してみましょう。
 
1-2-1.
ファミリ名に "famMNU" が登録されています。MNU_Framework を利用するには必要なファミリです。登録するだけで構いません。
1-2-2.
この画像では緑で囲んだコマンドボタンが、プルダウンメニューから選択することで実行できます。コマンドの実体ですね。
つまり緑で囲んだボタンに準じてコマンドの実体を登録、削除することになります。他のボタンは原則として削除しないようにしてください。

特につぎのオブジェクトは現在のエリア(H は ヘッダー、D は 明細行)から出さないようにしてください。
 
 
※詳細は クラッシックINF_Framework の解説をご覧になってください。
1‐3.
イベントファイルを確認してみます。
1‐3-1.
MNU_Framework を使用するには INF_Framework の設定に必要な構文に加えて
つぎの構文が追加されています。"begin MNU_Framework 名札 メイン" ~ "end MNU_Framework 名札 メイン"まで。
 
1‐3-2.
実際にプルダウンメニュー(ほんとうは ポップアップメニュー ですが)で実行するコマンドの記載は次のようになります。
手続き定義開始 MNUprcStartup( 参照 文字列 &objectList, 参照 文字列 &メニュー名[], ・・・・ に記載します。
記入する枠(場所)は決まっているので、ルールに従って編集するということになります。
サンプルでは重複記載もあります。変数値の代入なので、あとに記載される内容が有効になります。
実際に使われる際には、重複行は削除しましょう。
 
1‐3-3.
プルダウンメニュー(ほんとうは ポップアップメニュー ですが ← この説明はここまでにします)とイベントを比較してみます。

次は メニュー1 の フォームでのプルダウンメニュー表示とイベントの対応図です。

プルダウンメニュー内の "仕切り線" の設定方法をご確認ください。
また使用できないコマンドボタンが "使用不可表示" になっていることをご確認ください(ボタンが使用できない状態 もしくは ボタンが存在しない)。
 

 
少々ごちゃごちゃして見ずらくなったので、次をご覧になってください。

"&選択肢List" と "&機能名List" が コンマ(,)または読点(、)で区切られて順に対応しています。
また 仕切り線は"&選択肢List" でハイフン("-")を2文字以上指定します。 "&機能名List" では読点(、)で区切られているだけです。
 

 "新メニューの練習" を ひと通り見てみました。次はセッティングの説明になります。

目次へ戻る


2.メニューへの登録 (セットアップ、"MNU_エディタ" のご紹介)

メニューへの登録はとても簡単です。
フォームにはコマンドボタンを準備しておいて、イベントにはコマンドボタンの名前(オブジェクト名)に @ をつけて記載するだけです。

------------------------

メニューの登録はソースコードを手入力してもよいのですがそれなりに面倒くさいので便利なユーティリティが提供されています。

ここでは その "MNU_エディタ" をご紹介します。
メニューのタイトルや登録するコマンドボタン、幅などを調整した結果を実際のフォーム画面を使ってプレビューできます。
※なおソースコードを自動で更新する機能はないので、[保存]ボタンを使ってテキストファイルに書き出します

 

2-1.
フォーム "MNU_エディタ" を起動して、[開く] で "新メニューの練習.wfx" を指定します。
 

 

"MNU_エディタ" を起動した際、以下の解説が表示されたときには [OK]ボタンで解説を終了して次に進んでください。
 
   
2-2.
"新メニューの練習.wfx" を開くと、 "新メニューの練習.wfx" がプレビュー画面として起動します。
同時に このフォーム( 新メニューの練習.wfx )から メニューデータを読み込みますか?
と問い合わせがあるので、[はい(Y)] をクリックします。

 

[はい(Y)] をクリックすると、右図のように
"MNU_エディタ" に現在の設定値が表示されます。

メニュー名 と メニュー幅調整値 が表示されてます。

2-3. MNU_パラメータ編集 を開くと メニュー名 と 選択肢 を入力することができます。分かり易い見出しを付けてください。
 

2-4. 機能名は一覧から選択します。フォームに登録されているコマンドボタンが表示されています。
 
 
ここでは フォームに存在しない "@cmdズームイン" を "EZWcomズームイン"
に変更(一覧から選択)
同様に "@cmdズームアウト" を "EZWcomズームアウト" に変更します。
 
メニュー名に (&F)などのアクセスキーを登録(記載)することができます。
アクセスキー (&F) などは半角で入力します。
同様に 選択肢 のアクセスキーも (&X) 等を半角で入力(登録)します。

 
 2-5.  登録内容が確定したら、メニュー幅を調整しましょう(値を直接手入力しても良いですが、微調整はスピンボタンを利用するとよいですね)。
 

 
 2-6. "MNU_パラメータ編集.wfx" を閉じると "MNU_エディタ.wfx" の [保存]ボタン でメモ帳に編集内容を書き出してください。
ソースコードをメモ帳から イベントファイルにコピー&ペーストすればOKです。 
 

 
   プロシージャ MNUprcStartup の該当部分(行)を置き換えるとつぎのようになります。
 

 
2-7.    また &幅の調整値[*] に マイナス幅を指定すると、メニューの幅が狭く表示されます。
メニュー名(テキスト)の一部が表示されなくなります。
 
2-8. メニューは12個、各メニューに登録できるコマンド数は仕切り線と併せて20個になります(合計240個)
全てを表示させると次のようになります。
メニュー用の ラベルオブジェクトはすべてフォームのヘッダ部分に置いています。
整列していませんが、大丈夫です。MNU_Framework がきちんと並べてくれます。
 

2-9. プロシージャ、MNUprcStartup は次のように記載します。
  以下は説明の抜粋です。※イベントファイルのプロシージャ:MNUprcStartup に記載されています。

**(1) メニューの名前
 **(例) &メニュー名[1] = "ファイル(&F)" ※ &F は [Alt] + [F]キー を実行する
 **
 **(2) 選択肢のリスト コンマ(,)または読点(、)で区切ります ※コンマ(,)は半角全角の区別はありません
 **  仕切り線はハイフン("-")を二文字以上指定します ※ハイフン("-")は半角全角の区別はありません
 **(例) &選択肢List[1] = "仕事1(&R),仕事2(&T),仕事3(&B),---,フォームの終了(&X)"
 **
 **(3) 機能名のリスト コンマ(,)または読点(、)で区切ります ※コンマ(,)の半角全角の区別はありません
 ** コマンドボタンを実行する場合は、アットマーク記号(@)をオブジェクト名の前につける ※アットマーク記号(@)の半角全角の区別はありません
 **(例) &機能名List[1] = "@cmd読み取り,@cmdHTML文書,@cmdメールを開く,,@cmd閉じる"
 ** 一般手続きを実行する場合は、手続き名( ) または 手続き名( 引数 )とする 注意:かっこ内の引数リストの区切りはセミコロン(;)を使用する セミコロン(;)の半角全角の区別はありません
 **
 **
 **(4) 幅の調整値 メニューウィンドウの幅を狭くするには負の値を指定します
 **(例) &幅の調整値[1] = -5  /* 単位はポイント */
 **
 ** リストの書き方に関して
 ** コンマ(,)または読点(、)で区切ります コンマ(,)の半角全角の区別はありません
 ** コマンドボタン:アットマーク記号(@)をオブジェクト名の前につける アットマーク記号(@)の半角全角の区別はありません
 ** 一般手続き:手続き名( )   必ずカッコ"( )"が必要です カッコの半角全角の区別はありません
 ** 一般手続き:手続き名( 引数 ) かっこ内の引数リストの区切りはセミコロン(;)を使用する セミコロン(;)の半角全角の区別はありません

手続き(プロシージャ)を直接登録すると次のようになります(※ @cmd閉じる はボタンを登録しています)。
 

 


〇 MNU_Framework に必要なファイル

フレームワークの4ファイル " INF_Framework.cmx , IPS_Framework.cmx , INF_MNU.kex , INF_MNU.wfx "
と " MNU_Framework.cmx , MNU_form.wfx , MNU_form.kex "
実際に使用するフォームとイベントファイル
MNU_Framework ( INF_Framework も必用です) を利用するための構文がセットされていること
" MNU_エディタ.wfx , MNU_エディタ.kex , MNU_パラメータ編集.wfx , MNU_パラメータ編集.kex " は、ユーティリティなので必須ファイルではありません。
が、とても便利なので有効に使いましょう (^^♪
   

最初にご案内しましたが、サンプルの” 新メニューの練習 ” は モダンINF_Framework に MNU_Framework を適用したものです。

ここまでの解説でわかるように ” 新メニューの練習 ” は イベントファイルに重複しているソースがあります。
その行を削除するだけで(削除しなくてもよいですが)、 メニューがセットされた雛形として利用できます。

モダンINF_Frameworkにメニューがセットアップされたものなので、項目名が自動でセットされる等の便利機能がすぐに利用できます。
そして オートINF_Framework の便利機能を使いながら、様々なプロシージャを追加していくことができるようになります。

なおご自分で新たに モダンINF_Framework にメニュー機能をセットしたい場合には
次の章 「3. クラッシックINF_Framework に MNU_Framework を適用する。」 を参考にしてください。

目次へ戻る


3.クラッシックINF_Framework に MNU_Framework を適用する。

ここまで解説に使用した ”新メニューの練習” は、モダンINF_Framework のファイルです。
イベントファイルで重複してる部分(メニューの登録部分)を削除すれば、
モダンINF_Framework でメニューを利用する際のベースとなるファイルが完成します。

この章では、クラッシックINF_Framework に MNU_Framework を適用する手順を紹介します。

クラシックINF_Framework で作成したベースとなるファイルにプルダウンメニューを表示する、
オブジェクトやプログラムを追加して、メニューを適用した クラシックINF_Framework のベースとなるファイルセットを作成します。

クラシックINF_Framework でベースになるファイルを作成していない方は、ここをクリックして ベースとなるファイルをダウンロードしてください。
解凍した " INF33MkII_Classic_Mnu.wfx , INF33_Classic_Mnu.kex , INF33MkII_Classic_Mnu.tbx " の3個のファイルを使って手順を解説していきます。

 

3-1. フォーム  " INF33MkII_Classic_Mnu.wfx " を定義画面で開きます。
ここでは、famMNU を登録して、” 新メニューの練習.wfx ” から メニュー(1~12)、メニューバー仕切り線 のオブジェクトをコピーします。
3-1-1. famMNU を登録します。
 

3-1-2. ヘッダー部分を広くしておいて ”新メニューの練習.wfx ” から メニュー用のオブジェクトをコピーします。
 

  メニュー全部を表示するように整えると、たとえば次のようになります。
 


3-2. イベントファイル  ” INF33MkII_Classic_Mnu.kex ” を定義画面で開いて、
イベントファイル ” 新メニューの練習.kex ” から必要な部分をコピーしてきます。
3-2-1. 名札メイン には、次の部分をコピーします。
   5行 *---------- begin MNU_Framework 名札 メイン ---------------*
      ↓  ↓
44行  *---------- end MNU_Framework 名札 メイン -----------------*  
 

3-2-2.  プロシージャは MNUprcStartup をコピーします。

手続き定義開始 MNUprcStartup( 参照 文字列 &objectList, 参照 文字列 &メニュー名[],・・・ 以下省略
また サンプル” 新メニューの練習.kex ” の重複部分はコピー不要でしょう (^^♪ 
 

3-3. イベントファイルが完成したら、フォーム  " INF33MkII_Classic_Mnu.wfx " を編集画面で開いてみましょう。
ここでは、明細行の項目を設定していない状態での一覧表画面を掲載しています。

クラシックINF_Framework は、明細行のオブジェクトにソースを設定したりするのは手作業で個別に行うからです。
 

INF_Framework が適用されているので、フォームウィンドウの幅や項目幅は作成後に調整できます。

3-4. 以上のように クラシックINF_Framework に MNU_Framework をセットしたファイルを準備しておくと、
次の手順で簡単にプルダウンメニュー付きのフォームを作成することができます。
3-4-1. 使用する表(TBX)を決めたら、ここで作成した  " INF33MkII_Classic_Mnu.wfx , INF33MkII_Classic_Mnu.kex " を名前を変えて複写します。
※変更する名前は、使用する表と同じ名前をお勧めします。
3-4-2. 新たに作成(コピー&リネーム)したフォームの属性で [イベントファイル名] と[参照表]と[編集対象表]を指定します。
3-4-3. 明細行のオブジェクトにソースを設定。不要な "cmdCaption_* " と "txtField_* " がある場合ワークスペースに移動。
不足している場合は、クラシックINF_Framework の解説 をご覧になって正しくオブジェクトをセットアップしてください。

以上で完成です。
コマンドボタンを準備したら、メニューラベルの数を調整して(不要分はワークスペースに移動)、 ”MNU_エディタ.wfx” 等でソースコードを作成。


目次へ戻る