メニューとメニューバーの作成
メニューおよびメニューバーを作成するには次の 2つの方法があります:
- 4Dツールボックスウィンドウのメニューエディターを使用する。この場合、メニューとメニューバーはアプリケーションのストラクチャーに保存されます。
- "メニュー" テーマのランゲージコマンドを使用して動的におこなう。この場合、メニューとメニューバーは保存されず、メモリ内にのみ存在します。
両方の機能を組み合わせて、メモリ内のメニューを定義するのに、ストラクチャーに作成したメニューをテンプレートとして使うこともできます。
デフォルトメニューバー
カスタムアプリケーションには、少なくとも 1つのメニューを持つ 1つのメニューバーが必要です。新規にプロジェクトを作成すると、4D は自動でデフォルトメニューバー (メニューバー#1) を作成します。このデフォルトメニューバーには、標準のメニューとデザインモードに入るためのコマンドが用意されています。
このメニューが用意されているため、ユーザーはプロジェクトを起動するとすぐにアプリケーションモードを使用できます。実行 メニューから アプリケーションモード コマンドを選択すると、自動でメニューバー#1 が呼び出されます。
デフォルトメニューバーには 3つメニューがあります:
- ファイル: このメニューには 終了 コマンドだけが含まれています。このコマンドには quit 標準アクションが割り当てられていて、選択されるとアプリケーションが終了します。
- 編集: 編集メニューは標準であり、内容の変更が可能です。編集メニューのコマンド (コピーやペーストなど) は標準アクションで指定できます。
- モード: モードメニューにはデフォルトで、アプリケーションモードを終了するための デザインモードに戻る コマンドが含まれます。
メニュータイトルはハードコードされたテキストではなく、xliff参照を使用しています。この点については タイトルプロパティ を参照してください。
このメニューバーを必要に応じて変更したり、新しく追加したりできます。
メニューの作成
メニューエディターを使用する
- 作成する対象 (メニューバーまたはメニュー) を選択し、エリアの下にある追加ボタン
をクリックします。または
リストのコンテキストメニューあるいはリストの下にあるオプションメニューから 新規メニューバー作成 または 新規メニュー作成 を選択します。メニューバーを作成した場合は、新しいメニューバーがリスト中に追加され、デフォルトメニュー (ファイルと編集) があらかじめ添付されています。 - (任意) メニューバー/メニューの名前の上でダブルクリックすると、名前を編集できるモードになり、名前を変更することができます。または
ウィンドウ右の "タイトル" エリアに名前を入力します。メニューバー名はユニークでなければなりません。名前には 31文字までの文字列を指定できます。メニューのタイトルには文字列リテラルのほかに、参照も使用できます (タイトルプロパティ の説明を参照ください)。
4Dランゲージを使用する
Create menu コマンドを使って、新規メニューバーまたはメニュー参照 (MenuRef) をメモリ上に作成します。
メニューが MenuRef 参照を使用して処理される場合、メニューとメニューバーの間に違いはありません。両方とも項目のリストから構成されます。それらの利用方法のみが異なります。メニューバーの各項目は、それ自身が 1つのメニューであり、項目から構成されています。
Create menu で空のメニューを作成した場合には、APPEND MENU ITEM または INSERT MENU ITEM コマンドによって項目を追加していきます。また、同コマンドのソースメニューとして、メニューエディターで定義されたメニューを指定した場合には、そのコピーが新しいメニューとして作成されます。
項目の追加
各メニューには、メニューがクリックされたときにドロップダウン表示されるメニュー項目を作成しなければなりません。項目を追加してメソッドや標準アクションを割り当てたり、他のメニューをサブメニューとして添付したりできます。
メニューエディターを使用する
メニュー項目を追加するには:
- ソースメニューリスト中で、項目を追加するメニューを選択します。メニューが既に項目を持っていれば、それが中央のリストに表示されます。新しい項目を挿入するには、その上にくる項目を選択します。ドラッグ&ドロップ操作で、後から順番を変更することも可能です。
- メニューエディターのオプションメニュー、またはエディターのコンテキストメニュー (中央のリスト内で右クリック) から メニューバー/メニュー "メニュー名" に項目を追加 を選択します。または
中央のリストの下にある追加ボタンをクリックします。項目が追加され、デフォルト名 "項目 X" が割り当てられます (X は項目の番号)。
- 項目名の上でダブルクリックすると、名前を編集できるモードになり、名前を変更することができます。または
ウィンドウ右の "タイトル" エリアに名前を入力します。名前には 31文字までの文字列を指定できます。メニューのタイトルには文字列リテラルのほかに、参照も使用できます (後述参照)。
4Dランゲージを使用する
既存のメニュー参照にメニュー項目を挿入するには INSERT MENU ITEM または APPEND MENU ITEM コマンドを使います。
メニューや項目の削除
メニューエディターを使用する
メニューエディターを使って、メニューバー、メニュー、メニュー項目をいつでも削除できます。各メニューやメニューバーは 1つの参照しか持たない点に留意してください。あるメニューが、複数のメニューバーやメニューに添付されていた場合、そのメニューに対しておこわれた変更や削除はこのメニューのすべての他のオカレンスに対しても有効となります。メニューを削除すると、参照だけが削除されます。特定のメニューへの最後の参照を削除しようとすると、4Dはアラートを表示します。
メニューバー、メニュー、メニューコマンドを削除するには:
- 削除する項目を選択し、リストの下にある削除ボタン
をクリックします。
- コンテキストメニューまたはエディターのオプションメニューから 〜 を削除 コマンドを選択します。
メニューバー#1 を削除することはできません。
4Dランゲージを使用する
DELETE MENU ITEM コマンドを使ってメニュー参照から項目を削除します。メニュー参照をメモリからアンロードするには RELEASE MENU コマンドを使います。
メニューの添付
メニューを作成したら、それをメニューバーや別のメニューに (サブメニューとして) 添付できます。
サブメニューは、テーマに基づき機能をグループ化する目的で使用されます。サブメニューとその項目は、メニューと同じ属性 (アクション、メソッド、ショートカット、アイコン等) を持つことができます。サブメニューの項目は元の特性やプロパティを保持し、サブメニューの動作は標準のメニューと同じです。
サブメニューのサブメニューを作成することができ、階層化に制限はありません。しかし、インターフェース標準に沿うには、2レベルを超えるサブメニューは推奨されません。
ランタイムにおいてプログラミングによりメニューを変更した場合、そのメニューが添付されているすべてのインスタンスに変更が反映されます。
メニューエディターを使用する
各メニューは、メニューバーあるいは別のメニューに添付できます。
- メニューバーにメニューを添付するには: メニューバーを右クリックし、メニューバー "メニューバー名" にメニューを添付 > を選択、そしてサブメニューから添付するメニューを選択します:
また、メニューバーを選択してから、リストの下にあるオプションメニューをクリックする方法もあります。
- メニューに他のメニューを添付するには: 左のリスト中でメニューを選択し、次に中央リストのメニュー項目上で右クリックし、項目 "項目名" にサブメニューを添付 > を選択、そしてサブメニューとして使用するメニューを選択します:
また、メニュー項目を選択してから、リストの下にあるオプションメニューをクリックする方法もあります。添付されたメニューはサブメニューとなります。項目のタイトルは保持されますが (元のサブメニュー名は無視されます)、このタイトルを変更することができます。
メニューの分離
メニューバーからメニューを、あるいはメニューからサブメニューを分離できます。分離されたメニューは、メニューバーやメニューから利用できなくなります。 しかしメニューリストには残されます。
メニューを分離するには、中央リスト内の分離したいメニュー上で右クリックし、メニュー "メニュー名" をメニューバー "メニューバー名" から分離 または 項目 "項目名" のサブメニューを分離 を選択します。
4Dランゲージを使用する
4Dランゲージにおいてはメニューとメニューバーの違いはないため、メニューおよびサブメニューの添付は同じ手順でおこないます: APPEND MENU ITEM コマンドの subMenu パラメーターを指定して、メニューやメニューバーにメニューを添付します。