メニューの管理

4D - Documentation   French   English   German   Spanish   日本語   4D v11 SQLコマンドテーマリスト   4D v11 SQLインデックス   4D v11 SQL定数テーマリスト   戻る   前   次

version 11 (Modified)


用語

メニューコマンドに関する説明では、メニューの行について述べる部分でメニューコマンドメニュー項目という用語が同等の意味で使用されています。

MenuRef と メニュー番号


4Dランゲージではメニューやメニューバーの管理に、参照によるものと番号によるもの、2つの方法を使用できます。

・参照 (MenuRef) を使用したメニューの管理は、4D v11で導入された新しいメニュー管理の方法です。このモードは、完全に動的な (メニューエディタに存在する必要なく、オンザフライで作成されたメニュー) インタフェースの作成や、マルチレベルの階層サブメニュー管理のような上級機能へのアクセスを提供します。

・番号によるメニューやメニューバーの管理は、デザインモードのメニューエディタに作成されたメニューに基づきます。(エディタ中の位置に対応する) メニューバーやメニューごとに固定の番号が割り当てられます。この番号はメニューやメニューバーを指定するためにコマンドで使用されます。番号により管理されるメニューに適用するランゲージコマンドのスコープは、カレントメニューバーです。

この動作は以前のバージョンの4Dに対応し、後ほど"番号によるメニューの管理"で説明するいくつかのルールに従います。この方法はまだ使用できますが、バージョン11から提供される新しい機能 (特に動的なメニュー管理と階層サブメニュー) を使用できません。番号を使用した場合、階層サブメニューにはアクセスできません。

両方のメニュー管理モードは相互に互換性があり、あなたのインタフェースで同時に使用できます。"メニュー"テーマのほとんどのコマンドは、メニュー番号と参照両方をサポートします。

しかし、より多くの機能を使用できるため、参照によるメニュー管理をお勧めします。メニューインタフェースが部分的あるいは完全にメニューエディタで定義されているなら、Get menu bar referenceGET MENU ITEMSコマンドを使用して、参照による形式で完全に管理できることに留意してください。

参照によるメニュー管理


メニューがMenuRef参照を使用して処理される場合、メニューとメニューバーの間に違いはありません。両方とも項目のリストから構成されます。それらの利用方法のみが異なります。メニューバーの場合、メニューに対応するそれぞれの項目は、それ自身が項目を構成します。これは階層メニューベースのメニューでも同じ原則です。項目はそれ自身がメニューとなり得ます。

メニューが参照で管理される場合、セッション中でこのメニューに対して行われた変更は、このメニューのすべてのインスタンスおよびデータベースのすべてのプロセスに渡されます。

MenuRef

階層リストのように、すべての項目は、セッション全体を通して識別できるようにするユニークな参照を持ちます。この参照はMenuRefと呼ばれ、16文字で表されます。"メニュー"テーマのすべてのコマンドは、メニューを指定するために参照とメニュー番号両方を受け入れます。

メニュー参照はCreate menu, Get menu bar reference または GET MENU ITEMSコマンドを使用して取得できます。

番号によるメニュー管理


メニューバーは、デザインモードのメニューエディタで定義できます。番号で管理する場合、それぞれのメニューバーは番号または名前で識別されます。(4Dが自動で作成する) 最初のメニューバーは番号が1で、名前はデフォルトでメニューバー番号1となります。メニューエディタ内でこの名前を変更できます。メニューバー名は31文字までを使用でき、ユニークでなければなりません。

1番目のメニューバーはデフォルトのメニューバーでもあります。1番目のメニューバー以外でアプリケーションを開くには、On Startup データベースメソッドSET MENU BAR コマンドを使用します。メニューバーの内容をプログラムで変更することはできません。しかし、それを含むメニューを変更することはできます。静的なメニューに適用されたランゲージコマンドのスコープは、カレントメニューバーです。(* 引数なしの) SET MENU BAR コマンドの呼び出しごとに、すべてのメニューとメニューコマンドは、メニューエディタで定義された元の状態に戻ります。

すべてのメニューバーは、3つのメニュー、ファイル、編集、およびモードメニューを持ちます。

・ファイルメニューには終了コマンドしかありません。終了標準アクションが割り当てられ、このアクションは「終了しますか?」のダイアログボックスを表示し、4Dアプリケーションの終了または取り消しを行うことができます。

Note: Mac OS Xでは、メニューコマンドの終了に関連づけられるアクションは、自動的にデータベースを起動しているシステムのアプリケーションメニューに配置されます。

ファイルメニュー名を変更したり、メニューコマンドを追加したり、あるいはそのまま使用することも出来ます。ファイルメニューの最後の項目を終了とすることをお勧めします。

・編集メニューには、標準的な編集メニューコマンドが含まれます。標準アクション(取り消し、カット、コピー、ペースト等)がメニュー項目に割り付けられています。開発者は、コマンドを追加したり、独自のメソッドにより編集アクションを管理することが出来ます。

・モードメニューには、デザインモードに戻るコマンドが含まれます。このコマンドは、デザインモードが有効であれば、アプリケーションモードからそこに戻るために使用されます。

Note: 4DはヘルプとMac OS Xのアプリケーションシステムメニューを自動的に管理します。このメニューは4Dについてコマンドを除き、変更することはできません。4DについてはSET ABOUTコマンドで管理できます。

警告: メニューバーは"インタープロセス"です。デザインモードで行われたメニューバー上の更新は、すべてのメニューバーを使用しているプロセスに反映されます。

メニュー番号とメニューコマンド番号

メニューバーのように、メニューにも番号が付けられています。通常ファイルメニューはメニュー1です。その後メニューは左から右に順に番号が付けられます。アプリケーションメニュー (Mac OS ) はこのメニューの番号付からは外されます。両プラットフォームにおいて、ヘルプメニューも番号付からは外されます。Count menus コマンドはこれらのメニューを考慮に入れないことに留意してください。例えばメニューバーがファイル, 編集, 顧客, 請求 そして ヘルプメニューから構成されているとき、Count menus は4Dが管理するシステムメニューを除いて、4を返します。

メニューの番号付は例えばMenu selected関数を使用する際に重要です。

メニューがフォームに関連付けられている場合、メニューの番号付スキームは異なります。最初に追加されたメニューは2049から始まります。追加されたメニューを参照するには、通常のメニュー番号に2048を加えます。

各メニュー内のメニュー項目は、項目の1番上から下に向かって連続番号が付けられています (区切り線を含む)。1番上のメニューがアイテム1です。

連結メニューバー

フォームプロパティを使用してフォームにメニューバーを関連付けることができます。このようなメニューをこのドキュメントでは “フォームメニューバー” と呼びます。

フォームメニューバー上のメニューは、アプリケーションモードで、出力フォームとしてフォームが表示された際のカレントメニューバーに追加されます。

フォームメニューバーは、メニューバー番号で指定します。カレントフォームに付随して表示されたメニューバーの番号が、そのフォームに追加されたメニューバーの番号と同じである場合には、メニューバーは追加されません。

フォームメニューバーはメニューバー番号やメニュー名で指定されます。番号や名前がカレントのメニューバーと同じ場合、メニューバーは追加されません。

デフォルトで、カスタムメニューバーとともにフォームを表示した時、メニューバーコマンドは無効にされています。つまり、選択してもコマンドは実行されまません。フォームプロパティのアクティブメニューバーオプションをチェックすることによって動作を変更することができます。これにより、カレントメニューバーのコマンドが使用可能となります。

すべての場合において、メニュー コマンドの選択はフォームメソッドにOn Menu Selectedイベントを発生させます。そこで、選ばれたメニューをテストするためにMenu Selectedコマンドを使うことができます。

添付メニュー

メニューをメニューバーに添付できます。添付されたメニューがコマンドで変更されると、すべてのインスタンスにこの変更が反映されます。添付メニューに関する詳細は、4D Design Reference マニュアルを参照してください。

メニューコマンドに関連付けられた標準アクションとメソッド


各メニューコマンドには、プロジェクトメソッドまたは標準アクションを持つことができます。メニューにメソッドまたは標準アクションを割り当てていないと、そのメニューを選択したとき4Dはアプリケーションモードから抜けてデザインモードへ戻ります。アプリケーションモードだけが利用可能な場合や、ユーザがデザインモードへのアクセス権を持たない場合、4Dは終了します。

標準アクションは、システム機能(コピー、終了等)に、または4Dのデータベース(レコード追加、すべてを選択等)にリンクされた様々な基本操作を実行するために使用できます。

標準アクションとプロジェクトメソッドの両方をメニューコマンドに割り当てることができます。この場合、標準アクションは実行されません。しかし現在のコンテキストに従って4Dは、メニュー項目を選択可/選択不可に変更したり、プラットフォーム特有のメニュー処理 (例えばMac OSで環境設定メニューをアプリケーションメニューに移動する) などを行ったりします。メニュー項目が選択不可になった場合、関連づけられたプロジェクトメソッドは実行されません。

menuItem = -1


メニュー項目の管理を容易にするために、4Dはメニューに最後に追加された項目を指定するためのショートカットを提供します。この場合、menuItem 引数に-1を渡します。

この原則は"メニュー"テーマのメニュー項目を扱うすべてのコマンドに適用できます。


4D - Documentation   French   English   German   Spanish   日本語   4D v11 SQLコマンドテーマリスト   4D v11 SQLインデックス   4D v11 SQL定数テーマリスト   戻る   前   次