この節 (2.7) の見出しの一覧
メニューエディタとは/メニューの標準化とメニューの置き換え (取り込み)/メニューエディタの呼び出し方/モーダルなウィンドウとモードレスなウィンドウ
メニューエディタは、次の形 (顔) をしています。
メニューエディタは、フォームの中のメニューのデザインをするときに使う召使です。言わば、メニューに関する専用エディタだといえます。
メニューエディタは、メニューを新たに張り付けるときだけではなく、既に張り付けられているメニューを変更するためにも、削除するためにも使うことができます。
一般に、コントロールをフォームウィンドウに張り付ける操作は、ツールボックスから取り出してフォームウィンドウの上へという流れになります。しかし、メニューというコントロールだけは、別扱いになっていて、このメニューエディタという召使を使って張り付けます。
メニューエディタを使ってメニューの編集を終えると、そのメニューはフォームウィンドウに出現しますから、意図したとおりのメニューになっているかどうかをフォームウィンドウの上で確認することができます。
複数のフォームモジュールから構成されるプロジェクトにおいては、どのフォームのメニューを対象にするのか明確にしなければなりません。メニューの編集作業を始めるときには、フォームウィンドウをクリックしてフォーカスをあててください。こうすると、「このフォームのメニューを対象にするのだ」 と宣言したことになります。
数多くの画面プログラムから構成される業務アプリケーションシステムを開発するときに、各画面のメニューを統一性のある形にしたいというような標準化が求められたりします。
こんなときには、メニューのひな型 (標準形) をフォームモジュールにコピーできると好都合です。しかし、残念なことにメニューエディタには、この機能がありません。そこで出番となるのが、MANDALA のメニューの置き換え (取り込み) を行う機能です。
まずは、メニューエディタを用いてメニューのひな型をデザインしておき、次にメニューの置き換え (取り込み) 機能を用いてメニューのひな型をフォームモジュールにコピーすれば目的を達成することができます。そして、数あるフォームの中には、標準形からはずれたメニューにしたいものもあるでしょうから、そういうものは、コピーをした後にメニューエディタを使って部分的に変更すればよいわけです。
メニューエディタを呼び出すには、上図のボタン、即ちメインウィンドウのツールバーの中のメニューエディタボタンをクリックしてください。または、メインウィンドウのツール(T) というメニュータイトルを開いて、その中のメニューエディタ(M)... というメニュー項目をクリックしてください。
--- これらの操作が有効なのは、フォームウィンドウにフォーカスがあたっている場合だけです。ですから、これらの操作の前に、どのフォームのメニューを対象にするのかを指定するために、フォームウィンドウをクリックしてフォーカスをあてることが必要です。---
メニューの編集作業が済んだら、メニューエディタの OK というボタンをクリックしてください。そこで編集した新版のメニューをフォームに反映することができます。
今編集したばかりの新版を捨てたいときには、キャンセルというボタンをクリックしてください。メニューは、編集作業を行う前の形に戻ります。
OK またはキャンセルというボタンをクリックすると、メニューエディタはディスプレイ画面上から消えます。
本題から少しそれますが、ここで注目していただきたいことがあります。それは、メニューエディタが呼び出されてから消されるまでの間、他の Visual Basic のウィンドウの操作が一切できなくなるということです。
このことを、メニューエディタはモーダルであるという言い方をします。この章でご紹介している9種類 (細かくは11種類) のウィンドウのうちメニューエディタだけがモーダルで、他の8種類はモードレスです。
一般的にダイアログボックスと呼ばれるウィンドウは、普通モーダルになっています。
モーダルなウィンドウが出現したときには、モーダルなウィンドウの操作を最優先で行ってください。いや、こうするしかありません。こうすることによって、そのウィンドウに関する操作を終えると、そのモーダルなウィンドウは消え去り、その仲間の他のモードレスなウィンドウに関する操作を行うことができるようになります。