プルダウンメニューを使ってみましょう(MNU_Framework の使い方)。
* 本当はポップアップメニューなのですが ( ^)o(^ )
MNU_Framework は ONnoji さん作成のフリーのライブラリです。INF_Framework 第3.2版 ファイナル に同梱されています。
MNU_Framework は INF_Framework の追加機能とお考え下さい( INF_Framework が必要になります)。
※ INF_Framework 第3.2版 ファイナル ( INF_Framework 第3.2版 Rev.227 ) for 桐10 / 桐10s を使用しています。
☆ INF_Framework 第3.2版 の公開は終了しました。
ここで使用する ライブラリ は所定のサイト
からダウンロードしてください。
1.まずはダウンロード&解凍したフォルダに含まれる フォーム "新メニューの練習" を見ていきましょう
2.メニューへの登録 (セットアップ、"MNU_エディタ" のご紹介)
3.オートINF_Framework(モダンINF_Framework) に MNU_Framework を適用する
4.クラッシックINF_Framework に MNU_Framework を適用する
〇 さっそくフォーム "新メニューの練習" を起動してみてください。マウスで ファイル(F) をクリックすると次のようになります。
プルダウンメニュー 、、、いいですね~。仕掛けが大きな(またいろんな要素がある)システムに適用すればとっても便利ですよね。
〇 定義画面からいくつかの設定を確認してみましょう。
・ ファミリ名に "famMNU" が登録されています。MNU_Framework を利用するには必要なファミリです。登録するだけで構いません。
・ この画像では緑で囲んだコマンドボタンが、プルダウンメニューから選択することで実行できます。コマンドの実体ですね。
この緑で囲んだボタン以外は、原則として削除しないようにしてください。
特につぎのオブジェクトは現在のエリア(H は ヘッダー、D は 明細行)から出さないようにしてください。
*詳細は クラッシックINF_Framework の解説をご覧になってください。
〇 イベントファイルを開いてみてください。
・ MNU_Framework を使用するには INF_Framework の設定に必要な構文に加えて
つぎの構文が追加されています。"begin MNU_Framework 名札
メイン" ~ "end MNU_Framework 名札 メイン"まで。
・ 実際にプルダウンメニュー(ほんとうは ポップアップメニュー ですが)で実行するコマンドの記載は次のようになります。
手続き定義開始 MNUprcStartup( 参照 文字列 &objectList, 参照 文字列 &メニュー名[], ・・・・ に記載します。
記入する枠は決まっているので、ルールに従って編集するということになります。
* サンプルでは重複記載もあります。変数値の代入なので、あとに記載される内容が有効になります。
実際に使われる際には、重複行は削除しましょう。
・ プルダウンメニュー(ほんとうは ポップアップメニュー ですが ← この説明はここまでにします)とイベントを比較してみます。
次は メニュー1 の フォームでのプルダウンメニュー表示とイベントの対応図です。
プルダウンメニュー内の "仕切り線" の設定方法をご確認ください。
また使用できないコマンドボタンが "使用不可表示" になっていることをご確認ください(ボタンが使用できない状態 もしくは ボタンが存在しない)。
少々ごちゃごちゃして見ずらくなったので、次をご覧になってください。
"&選択肢List" と "&機能名List" が コンマ(,)または読点(、)で区切られて順に対応しています。
また 仕切り線は"&選択肢List" でハイフン("-")を二文字以上指定します。 "&機能名List" では読点(、)で区切られているだけです。
"新メニューの練習" を一通り見てみました。次はセッティングの説明になります。
〇 メニューへの登録はとても簡単です。
フォームにはコマンドボタンを準備しておいて、イベントにはコマンドボタンの名前(オブジェクト名)に @ をつけて記載するだけです。
------------------------
メニューの登録はソースコードを手入力してもよいのですがそれなりに面倒くさいので便利なユーティリティが提供されています。
ここでは その "MNU_エディタ" をご紹介します。
メニューのタイトルや登録するコマンドボタン、幅などを調整した結果を実際のフォーム画面を使ってプレビューできます。
* なおソースコードを自動で更新する機能はないので、[保存]ボタンを使ってテキストファイルに書き出します。
1) フォーム "MNU_エディタ" を起動して、[開く] で "新メニューの練習.wfx" を指定します。
2) "新メニューの練習.wfx" を開くと、 "新メニューの練習.wfx" がプレビュー画面として起動します。
同時に 開いたフォーム( 新メニューの練習.wfx )から メニューデータを読み込むか と問い合わせがあるので、[はい(Y)] をクリックします。
"MNU_エディタ" に現在の設定値が表示されます(まずは、メニュー名 と メニュー幅調整値 が表示されてます)。
3) MNU_パラメータ編集 を開くと メニュー名 と 選択肢 を入力することができます。分かり易い見出しを付けてください。
4) 機能名は一覧から選択します。フォームに登録されているコマンドボタンが表示されています。
ここでは フォームに存在しない "@cmdズームイン" を "EZWcomズームイン" に変更(一覧から選択)
同様に "@cmdズームアウト" を "EZWcomズームアウト" に変更します。
*メニュー名に (&F)などのアクセスキーを登録(記載)することができます。
アクセスキー (&F) などは半角で入力します。
同様に 選択肢 のアクセスキーも (&X) 等を半角で入力(登録)します。
5) 登録内容が確定したら、メニュー幅を調整しましょう(値を直接手入力しても良いですが、微調整はスピンボタンを利用するとよいですね)。
6) "MNU_パラメータ編集.wfx" を閉じると "MNU_エディタ.wfx" の [保存]ボタン でメモ帳に編集内容を書き出してください。
ソースコードをメモ帳から
イベントファイルにコピー&ペーストすればOKです。
(注)出力サンプル(メモ帳の画像)をよく見ると、
拡張子が "wfx" となるべきところが "wfm" また "kex" となるべきところが "kev" になっていますが
ここでの表示以外には全く影響しません。 単純に読み替えてご利用になってください。
一般手続きの
手続き定義開始 MNUprcStartup( 参照 文字列 &objectList, 参照・・・ 以下略 ) の該当部分(行)を置き換えるとつぎのようになります。
-----------------------
また &幅の調整値[*] に マイナス幅を指定すると、メニューの幅が狭く表示されます。
*メニュー名(テキスト)がすべて表示されなくなります。
-----------------------
メニューは12個、各メニューに登録できるコマンド数は仕切り線と併せて20個になります(合計240個)
全てを表示させると次のようになります。
ラベルオブジェクトをフォームのヘッダ部分にすべて置いています(メニュー5~12は整列していませんが、大丈夫です。MNU_Framework がきちんと並べてくれます)。
以下は、イベントファイルのプロシージャ: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 /* 単位はポイント */
**
** リストの書き方に関して
** コンマ(,)または読点(、)で区切ります コンマ(,)の半角全角の区別はありません
** コマンドボタン:アットマーク記号(@)をオブジェクト名の前につける アットマーク記号(@)の半角全角の区別はありません
** 一般手続き:手続き名( ) 必ずカッコ"( )"が必要です カッコの半角全角の区別はありません
** 一般手続き:手続き名( 引数 ) かっこ内の引数リストの区切りはセミコロン(;)を使用する セミコロン(;)の半角全角の区別はありません
コマンドボタンではなく 一般手続き は次のように記載します。
〇 MNU_Framework に必要なファイル
フレームワークの6ファイル " INF_Framework.cmx , IPS_Framework.cmx , INF_LNC.kex ,
INF_LNC.wfx , 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:応用 で
オートINF_Framework で作成するフォームを、指定した " 表 " の専用とする手順を紹介しています。
*指定した "表" 専用ですので、オートではなく モダンINF_Framework となります(クラシックINF_Framework に対しての名称です)。
ここでは、指定した " 表 " 専用の モダンINF_Framework に MNU_Framework を適用してみます。
オートINF_Framework:応用 でベースになる モダンINF_Framework を作成していない方は、ここをクリックして ファイルをダウンロードしてください。
* 解凍した " INF_Modem_Mnu.wfx , INF_Modem_Mnu.kex , INF_Modem_Mnu.tbx "
の3個のファイルを使って手順を解説していきます。
〇 フォーム " INF_Modem_Mnu.wfx " を定義画面で開きます。
ここでは、famMNU を登録して、新メニューの練習.wfx から メニュー(1~12)、メニューバー仕切り線 のオブジェクトをコピーします。
・ famMNU を登録します。
・ 新メニューの練習.wfx を定義画面で開いて、既存のボタンを少し下に移動してヘッダーの最上部にメニューのオブジェクトをコピーします。
〇 イベントファイル " INF_Modem_Mnu.kex " を定義画面で開きます。
イベントファイル " 新メニューの練習.kex " から必要な部分をコピーしてきます。
・ 名札メイン には次の部分をコピーします(サンプル画像はコピー前です)。
*---------- begin MNU_Framework 名札 メイン ---------------*
↓ ↓
*---------- end MNU_Framework 名札 メイン -----------------*
・ それと、次の手続き部分をコピーします(サンプル画像はコピー後です)。
手続き定義開始 MNUprcStartup( 参照 文字列 &objectList, 参照 文字列 &メニュー名[],・・・ 以下省略
また、 " 新メニューの練習.kex " には重複している部分があるので、その部分はコピーしません。
・ イベントファイルが完成したら、フォーム " INF_Modem_Mnu.wfx " を編集画面で開いてみましょう。
・ サンプルで メニュー1に少し登録してみました。
☆ 以上のように オートINF_Framework に MNU_Framework をセットしたファイルを準備しておくと、
次の手順で簡単にプルダウンメニュー付きのフォームを作成することができます。
・ 使用する表(TBX)を決めたら、ここで作成した " INF_Modem_Mnu.wfx , INF_Modem_Mnu.kex "
を名前を変えて複写します。
変更する名前は、使用する表と同じ名前をお勧めします。
新たに作成(コピー&リネーム)したフォームを定義画面で開いて、イベントファイル名と、編集対象表を指定。
以上で完成です。
ボタンを準備したら、メニューラベルの数を調整して(不要分はワークスペースに移動)、 "MNU_エディタ.wfx" でソースコードを作成。
クラシックINF_Framework で作成したベースとなるファイルセットにプルダウンメニューをセットして、
MNU_Framework を適用した クラシックINF_Framework のベースとなるファイルセットを作成します。
クラシックINF_Framework でベースになるファイルを作成していない方は、ここをクリックして ベースとなるファイルをダウンロードしてください。
* 解凍した " INF_Classic_Mnu.wfx , INF_Classic_Mnu.kex , INF_Classic_Mnu.tbx "
の3個のファイルを使って手順を解説していきます。
〇 フォーム " INF_Classic_Mnu.wfx " を定義画面で開きます。
ここでは、famMNU を登録して、新メニューの練習.wfx から 次のオブジェクトをコピーします。メニュー(1~12)、メニューバー仕切り線。
・ famMNU を登録します。
・ 新メニューの練習.wfx を定義画面で開いて、必要なオブジェクトを
" INF_Classic_Mnu.wfx " の既存のボタンを少し下に移動してヘッダーの最上部にコピーします。
〇 イベントファイル " INF_Classic_Mnu.kex " を定義画面で開きます。
イベントファイル " 新メニューの練習.kex " から必要な部分をコピーしてきます。
・ 名札メイン には次の部分をコピーします(サンプル画像はコピー後です)。
*---------- begin MNU_Framework 名札 メイン ---------------*
↓ ↓
*---------- end MNU_Framework 名札 メイン -----------------*
・ それと、次の手続き部分をコピーします(サンプル画像はコピー後です)。
手続き定義開始 MNUprcStartup( 参照 文字列 &objectList, 参照 文字列 &メニュー名[],・・・ 以下省略
また、 " 新メニューの練習.kex " には重複している部分があるので、その部分はコピーしません。
・ イベントファイルが完成したら、フォーム " INF_Classic_Mnu.wfx " を編集画面で開いてみましょう。
*一覧表としてのソースを設定していない状態での画面です。
*INF_Framework が適用されているので、フォームウィンドウの幅や項目幅は作成後に調整できます。
・ サンプルとして いくつかの項目にソースを設定して メニュー1に少し登録してみました。
☆ 以上のように クラシックINF_Framework に MNU_Framework をセットしたファイルを準備しておくと、
次の手順で簡単にプルダウンメニュー付きのフォームを作成することができます。
・ 使用する表(TBX)を決めたら、ここで作成した " INF_Classic_Mnu.wfx , INF_Classic_Mnu.kex "
を名前を変えて複写します。
変更する名前は、使用する表と同じ名前をお勧めします。
新たに作成(コピー&リネーム)したフォームを定義画面で開いて、イベントファイル名と、編集対象表を指定。
明細行のオブジェクトにソースを設定。不要な cmdCaption_* と txtField_* がある場合ワークスペースに移動。
不足している場合は、クラシックINF_Framework
の解説 をご覧になって正しくオブジェクトをセットアップしてください。
以上で完成です。
ボタンを準備したら、メニューラベルの数を調整して(不要分はワークスペースに移動)、 "MNU_エディタ.wfx" でソースコードを作成。