メインコンテンツまでスキップ
バージョン: 21 R3

メニューとメニューバーの作成

メニューおよびメニューバーを作成するには次の 2つの方法があります:

  • 4Dツールボックスウィンドウのメニューエディターを使用する。この場合、メニューとメニューバーはアプリケーションのストラクチャーに保存されます。
  • "メニュー" テーマのランゲージコマンドを使用して動的におこなう。この場合、メニューとメニューバーは保存されず、メモリ内にのみ存在します。

両方の機能を組み合わせて、メモリ内のメニューを定義するのに、ストラクチャーに作成したメニューをテンプレートとして使うこともできます。

デフォルトメニューバー​

カスタムアプリケーションには、少なくとも 1つのメニューを持つ 1つのメニューバーが必要です。新規にプロジェクトを作成すると、4D は自動でデフォルトメニューバー (メニューバー#1) を作成します。このデフォルトメニューバーには、標準のメニューとデザインモードに入るためのコマンドが用意されています。

このメニューが用意されているため、ユーザーはプロジェクトを起動するとすぐにアプリケーションモードを使用できます。実行 メニューから アプリケーションモード コマンドを選択すると、自動でメニューバー#1 が呼び出されます。

デフォルトメニューバーには 3つメニューがあります:

  • ファイル: このメニューには 終了 コマンドだけが含まれています。このコマンドには quit 標準アクションが割り当てられていて、選択されるとアプリケーションが終了します。
  • 編集: 編集メニューは標準であり、内容の変更が可能です。編集メニューのコマンド (コピーやペーストなど) は標準アクションで指定できます。
  • モード: モードメニューにはデフォルトで、アプリケーションモードを終了するための デザインモードに戻る コマンドが含まれます。

メニュータイトルはハードコードされたテキストではなく、xliff参照を使用しています。この点については タイトルプロパティ を参照してください。

このメニューバーを必要に応じて変更したり、新しく追加したりできます。

メニューの作成​

メニューエディターを使用する​

  1. 作成する対象 (メニューバーまたはメニュー) を選択し、エリアの下にある追加ボタン をクリックします。または
    リストのコンテキストメニューあるいはリストの下にあるオプションメニューから 新規メニューバー作成 または 新規メニュー作成 を選択します。メニューバーを作成した場合は、新しいメニューバーがリスト中に追加され、デフォルトメニュー (ファイルと編集) があらかじめ添付されています。
  2. (任意) メニューバー/メニューの名前の上でダブルクリックすると、名前を編集できるモードになり、名前を変更することができます。または
    ウィンドウ右の "タイトル" エリアに名前を入力します。メニューバー名はユニークでなければなりません。名前には 31文字までの文字列を指定できます。メニューのタイトルには文字列リテラルのほかに、参照も使用できます (タイトルプロパティ の説明を参照ください)。

4Dランゲージを使用する​

Create menu コマンドを使って、新規メニューバーまたはメニュー参照 (MenuRef) をメモリ上に作成します。

メニューが MenuRef 参照を使用して処理される場合、メニューとメニューバーの間に違いはありません。両方とも項目のリストから構成されます。それらの利用方法のみが異なります。メニューバーの各項目は、それ自身が 1つのメニューであり、項目から構成されています。

Create menu で空のメニューを作成した場合には、APPEND MENU ITEM または INSERT MENU ITEM コマンドによって項目を追加していきます。また、同コマンドのソースメニューとして、メニューエディターで定義されたメニューを指定した場合には、そのコピーが新しいメニューとして作成されます。

項目の追加​

各メニューには、メニューがクリックされたときにドロップダウン表示されるメニュー項目を作成しなければなりません。項目を追加してメソッドや標準アクションを割り当てたり、他のメニューをサブメニューとして添付したりできます。

メニューエディターを使用する​

メニュー項目を追加するには:

  1. ソースメニューリスト中で、項目を追加するメニューを選択します。メニューが既に項目を持っていれば、それが中央のリストに表示されます。新しい項目を挿入するには、その上にくる項目を選択します。ドラッグ&ドロップ操作で、後から順番を変更することも可能です。
  2. メニューエディターのオプションメニュー、またはエディターのコンテキストメニュー (中央のリスト内で右クリック) から メニューバー/メニュー "メニュー名" に項目を追加 を選択します。または
    中央のリストの下にある追加ボタン をクリックします。項目が追加され、デフォルト名 "項目 X" が割り当てられます (X は項目の番号)。
  3. 項目名の上でダブルクリックすると、名前を編集できるモードになり、名前を変更することができます。または
    ウィンドウ右の "タイトル" エリアに名前を入力します。名前には 31文字までの文字列を指定できます。メニューのタイトルには文字列リテラルのほかに、参照も使用できます (後述参照)。

4Dランゲージを使用する​

既存のメニュー参照にメニュー項目を挿入するには INSERT MENU ITEM または APPEND MENU ITEM コマンドを使います。

メニューや項目の削除​

メニューエディターを使用する​

メニューエディターを使って、メニューバー、メニュー、メニュー項目をいつでも削除できます。各メニューやメニューバーは 1つの参照しか持たない点に留意してください。あるメニューが、複数のメニューバーやメニューに添付されていた場合、そのメニューに対しておこわれた変更や削除はこのメニューのすべての他のオカレンスに対しても有効となります。メニューを削除すると、参照だけが削除されます。特定のメニューへの最後の参照を削除しようとすると、4Dはアラートを表示します。

メニューバー、メニュー、メニューコマンドを削除するには:

  • 削除する項目を選択し、リストの下にある削除ボタン をクリックします。
  • コンテキストメニューまたはエディターのオプションメニューから 〜 を削除 コマンドを選択します。

メニューバー#1 を削除することはできません。

4Dランゲージを使用する​

DELETE MENU ITEM コマンドを使ってメニュー参照から項目を削除します。メニュー参照をメモリからアンロードするには RELEASE MENU コマンドを使います。

メニューの添付​

メニューを作成したら、それをメニューバーや別のメニューに (サブメニューとして) 添付できます。

サブメニューは、テーマに基づき機能をグループ化する目的で使用されます。サブメニューとその項目は、メニューと同じ属性 (アクション、メソッド、ショートカット、アイコン等) を持つことができます。サブメニューの項目は元の特性やプロパティを保持し、サブメニューの動作は標準のメニューと同じです。

サブメニューのサブメニューを作成することができ、階層化に制限はありません。しかし、インターフェース標準に沿うには、2レベルを超えるサブメニューは推奨されません。

ランタイムにおいてプログラミングによりメニューを変更した場合、そのメニューが添付されているすべてのインスタンスに変更が反映されます。

メニューエディターを使用する​

各メニューは、メニューバーあるいは別のメニューに添付できます。

  • メニューバーにメニューを添付するには: メニューバーを右クリックし、メニューバー "メニューバー名" にメニューを添付 > を選択、そしてサブメニューから添付するメニューを選択します: また、メニューバーを選択してから、リストの下にあるオプションメニューをクリックする方法もあります。
  • メニューに他のメニューを添付するには: 左のリスト中でメニューを選択し、次に中央リストのメニュー項目上で右クリックし、項目 "項目名" にサブメニューを添付 > を選択、そしてサブメニューとして使用するメニューを選択します:
    また、メニュー項目を選択してから、リストの下にあるオプションメニューをクリックする方法もあります。添付されたメニューはサブメニューとなります。項目のタイトルは保持されますが (元のサブメニュー名は無視されます)、このタイトルを変更することができます。

メニューの分離​

メニューバーからメニューを、あるいはメニューからサブメニューを分離できます。分離されたメニューは、メニューバーやメニューから利用できなくなります。 しかしメニューリストには残されます。

メニューを分離するには、中央リスト内の分離したいメニュー上で右クリックし、メニュー "メニュー名" をメニューバー "メニューバー名" から分離 または 項目 "項目名" のサブメニューを分離 を選択します。

4Dランゲージを使用する​

4Dランゲージにおいてはメニューとメニューバーの違いはないため、メニューおよびサブメニューの添付は同じ手順でおこないます: APPEND MENU ITEM コマンドの subMenu パラメーターを指定して、メニューやメニューバーにメニューを添付します。