前回、フォームの画面を作るところまでと大雑把な仕組みをみるとこまでいきました。
今回はメニューに機能を追加するとともにその中身を調べてみることにします。
ボタンに機能を割り当てる
まずはメニューに機能を割り当ててみましょう。メニューフォームビルダを起動します。
ここで「編集」をクリックするとメニューに機能を追加することができます。クリックすると
「メニュー用フォームの編集」という新しいウィンドウが開きました。
「Main Switchboard」というメニューがあるんですが、今のところメニュー項目は空白になっています。そこで「新規」ボタンをクリックしてみます。
入力する項目が3つありますね。順を追ってみると
- 文字列・・・メニューボタンに表示する文字
- コマンド・・・ボタンをクリックしたときの動作
- メニュー項目・・・そのボタンを表示するメニュー
分かり辛いので実際に設定してみます。今まで作ってきた家計簿を例に使ってまずはマスタメンテナンス用のメニューボタンを作成してみます。この場合は
という具合に入力してOKを押してみます。
どうやら「マスタメンテナンス」というメニュー項目が作成されたようです。それではフォームビルダを閉じてメニューフォームを開いてみましょう。すると・・・
「マスタメンテナンス」というメニューボタンが作成されたようです。ではSwitchboard Item」テーブルはどうなったでしょうか?見てみましょう。
レコードが1件追加されていることが分かります。ここでもう少し機能を追加してみます。
- Main Switchboardから移動先のマスタメンテナンスメニューを作成
- Main Switchboardに家計簿を終了するボタンを作成
- マスタメンテナンスメニューから費目マスタメンテと摘要マスタメンテのフォームを開く
- マスタメンテナンスメニューからMain Switchboardメニューに戻る
- 入出金メニューを作成
- 入出金メニューから入出金金額入力フォームを開くボタンとMain Switchboardへ戻るボタンを作成
これらをまとめて追加した後のフォームとテーブルのデータを見てみます。
まずはマスタメンテナンスメニューを。「費目マスタメンテナンス」、「摘要マスタメンテナンス」、「戻る」のボタンが作成されています。
こちらは入出金メニュー。
また、Main Switchboardメニューに終了ボタンが作成されています。
続けてSwitchboard Itemsテーブルのデータを見てみると
レコードが増えました。各フィールドに色んな値が記録されているのがわかります。
テーブルとフォームの関係
フォームビルダで機能を追加するたびにレコードが作成されていくことが分かりました。このテーブルのデータを見ていくと・・・
- 設定した動作によってCommandの値が変わる
- Argumentに動作の対象となるメニュー番号やオブジェクト名が格納される
- ItemTextがボタン横のテキストボックスに格納される
らしいことが見て取れます。今回は使用していませんが「レポートを開く」や「フォームを編集モードで開く」、その他幾つかの動作が選択でき、動作に該当する数字がCommandに登録されます。
メニューの表題はItemNumberが0で登録されていることも分かると思います。
データの構造が見えてきたところで次回はフォームに埋め込まれたVBAを見ながら機能を分析してみます。