4D v14.3マクロの作成と利用 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v14.3
マクロの作成と利用
|
要素タグ | 説明 |
<macros> </macros> | マクロファイルの開始と終了 (必須)。 |
<macro> </macro> | マクロ定義の開始と終了。 |
属性: | |
- name: メニューやメソッドエディターリストに表示されるマクロの名前** (必須)。 | |
- type_ahead_text: タイプアヘッド (自動補完) 機能*を使用してマクロを呼び出すために入力する文字列**。 | |
- in_menu: コンテキストメニュー*からマクロを呼び出すことを許可するかを指定するブール値。値は"true" (デフォルト) または "false"。 | |
- type_ahead: タイプアヘッド (自動補完) 機能*を使用してマクロを呼び出すことを許可するかを指定するブール値。値は"true" (デフォルト) または "false"。 | |
- method_event: メソッドごとの現在の処理フェーズ (作成、閉じる等) に応じてマクロの自動呼出しを実行するために使用します。値 = "on_load": マクロはメソッドを開くたびに実行されます, "on_save": マクロはメソッドが保存されるたびに実行されます (メソッドを閉じるまたはファイル>保存コマンドを使用して保存する), "on_create": マクロはメソッドが作成されるたびに実行されます, "on_close": マクロはメソッドが閉じられるたびに実行されます。 | |
"on_save" と "on_close" は組み合わせて使用できます — 言い換えれば、これらのイベントは更新されたメソッドが閉じられるときに両方とも生成されます。他方、"on_create" と "on_load" が連続して実行されることはありません。この属性は例えばメソッド作成時にデフォルトのフォーマット (ヘッダーエリアのコメント等) を適用したり、メソッドを開いた際のタイムスタンプを記録するために使用することができます。 | |
- version: マクロ用にテキスト選択の新しいモードを有効化するために使用します (後述の“<method>タグについて”の節参照)。新しいモードを有効にするには"2"を指定します。この属性を省略するかversion="1"を指定すると、以前のモードが保持されます。 | |
- in_toolbar: ツールバーのマクロボタンメニューにマクロを表示するかどうかを指定するブール値。値="true" (デフォルト) または "false". | |
<selection/> | マクロが挿入される時点で選択されていたテキストを使用して、タグが置換されます。選択テキストは空の場合もあります。 |
<text> </text> | メソッドに挿入されるコードの開始と終了タグ。コードの先頭と最後には改行が追加されます。 |
<method> </method> | プロジェクトメソッド名とその引数 (オプション) の開始と終了。マクロが呼び出されたとき、メソッドが実行されます。("param1;param2;...")の形式で引数を渡せます。この引数は呼び出されたメソッド内で$1, $2...変数に渡されます。このタグに関する追加情報は後述の“<method>タグについて”を参照してください。 |
<caret/> | マクロが挿入された後のコード中の挿入ポイントの場所。 |
<user_4D/> | カレントの4Dユーザー名で置換されるタグ。 |
<user_os/> | カレントのシステムユーザー名で置換されるタグ。 |
<method_name/> | カレントのプロジェクトメソッド名で置換されるタグ。 |
<method_path/> | カレントプロジェクトメソッドのフルパス名で置換されるタグ。 |
<date/> | カレントの日付で置換されるタグ。 |
属性: | |
- format: 4Dの日付フォーマット。フォーマットが設定されていない場合、デフォルトのフォーマットが使用されます。値 = 4Dフォーマットの数字 (0 - 8). | |
<time/> | カレントの時間で置換されるタグ。 |
属性: | |
- format: 4Dの時間フォーマット。フォーマットが設定されていない場合、デフォルトのフォーマットが使用されます。値 = 4Dフォーマットの数字 (0 - 6). | |
<clipboard/> | クリップボードの内容で置換されるタグ。 |
属性: | |
- index: ペーストするクリップボード。値 = クリップボード番号 (0 - 9). |
* マクロはメソッドエディターのコンテキストメニューやタイプアヘッド機能を使用して呼び出すことができます (後述参照)。
** XML言語仕様に準拠するためには、拡張文字 (アクセント文字や引用符) を使用してはなりません。
以下はマクロ定義の例題です:
マクロの内容 | コメント |
<?xml version=”1.0”...?> | XML宣言 |
<!DOCTYPE macros SYSTEM> | ドキュメント宣言 |
<macros> | マクロXMLファイルの開始 |
<macro name="RecordLoop"> | マクロ定義と名前の開始 |
<text> | マクロコードの開始 |
For($i;1;Records in selection(<Selection/>)) | <Selection/>タグは、マクロ挿入時に4Dメソッド中で選択されたコードにより置換されます (例えばテーブル名) |
SAVE RECORD(<Selection/>) | |
NEXT RECORD(<Selection/>) | |
End for | |
</text> | マクロコードの終了 |
</macro> | マクロ定義の終了 |
</macros> | マクロXMLファイルの終了 |
<method>タグを使用すると、4Dプロジェクトメソッドを実行するマクロコマンドを作成して使用することができます。これにより開発者はコンポーネントにマクロコマンドを添付して配布し、洗練された機能を提供することが可能になります。例えば以下のマクロはカレントのメソッド名を引数にとり、MyMethod メソッドを実行します:
<method>MyMethod("<method_name/>")</method>
呼び出されたメソッドコードは新規プロセスで実行されます。このプロセスはメソッド実行後に消失します。
注: 呼び出されたメソッドの実行が終了するまでストラクチャープロセスは停止されます。メソッドの実行は素早く終了し、アプリケーションをブロックするリスクがないことを確認しなければなりません。ブロックが発生してしまった場合、Ctrl+F8 (Windows) または Command+F8 (Mac OS) でこのプロセスをアボートできます。
デフォルトでマクロはコンテキストメニュー、メソッドエディターのツールバー、自動補完機能、またはメソッドエディターウィンドウ下部のマクロリストから呼び出すことができます。
各マクロごとにコンテキストメニューや自動補完機能を使用した呼び出しを禁止することができる点に留意してください。
デフォルトですべてのマクロはメソッドエディターのコンテキストメニュー (マクロ挿入階層コマンド) またはツールバーのマクロボタンから呼び出すことができます。
<macro>タグのin_menu属性を使用して、マクロをこのメニューに表示させるかどうかを指定できます。
コンテキストメニュー内で、マクロは“Macros.xml”ファイルに記述された順番で表示されます。つまりファイルを編集することでこの順番を変更できます。
デフォルトですべてのマクロは自動補完 (タイプアヘッド) 機能からアクセスできます (メソッドを記述する参照)。<macro>タグのtype_ahead属性を使用して、特定のマクロをこの動作の対象から外すことができます。
注: マクロに<selection/>タグが含まれている場合、このマクロは自動補完ポップアップウィンドウには表示されません。
メソッドエディターのリストにマクロを表示させることができます (メソッドを記述する参照)。リスト中でマクロをダブルクリックし、呼び出すことができます。特定のマクロをこのリストから呼び出すことができます。
マクロのサポートは4Dのバージョンごとに変わることがあります。カスタマイズされたマクロを管理しつつ、異なるバージョンの互換性を保持するために、4Dは以前のバージョンのマクロを取り除くことはしません。利用可能な最新の機能を使用したい場合は、それをあなたのバージョンに適用する必要があります。
v11より前のバージョンの4Dでは、<method>タグを使用する際、メソッド中でテキストを操作するための一連のプロセス変数が自動で管理されていました: 入力変数 (_textSel, _blobSel, _selLen, _textMethod, _blobMethod, _methodLen) を使用してテキストを取り出し、出力変数 (_textReplace, _blobReplace, _action) を使用してテキストを挿入しました。互換性のためこのメカニズムはまだサポートされています。しかしバージョン11からは以下の理由で廃止予定リストに置かれています:
ゆえに、選択されたテキストはGET MACRO PARAMETERとSET MACRO PARAMETERコマンドを使用して管理することが推奨されます。これらのコマンドを使用すればホストデータベースとコンポーネント間でテキストを相互に交換することができ、マクロを管理するためのコンポーネントを作成することができます。マクロでこのモードを有効にするには、macro要素内でversion属性に値"2"を指定しなければなりません。この場合、4Dは_textSel, _textReplace等の定義済み変数を管理しなくなり、GET MACRO PARAMETERとSET MACRO PARAMETERが利用可能になります。属性は以下のように定義します:
<macro name="MyMacro" version="2">
--- マクロテキスト ---
</macro>
この属性を指定しない場合、以前のモードが保持されます。
4D v11より、マクロファイルはXML標準に準拠しなければならず、厳密なシンタックスルールが適用されるようになりました。これにより以前のバージョンで作成されたマクロコードに非互換が発生することがあり、またXMLファイルがロードできなくなることがあります。異常な動作が起こるのは以下のケースです:
4Dバージョン12では、SQLコマンドの利用を容易にするための新しいマクロコマンドを利用できます。"Macros.xml"ファイルは開発者がカスタマイズ可能なため、新しいバージョンの4Dをインストールしても自動では既存のファイルを更新しません。4D v12の新しいSQLマクロコマンドを使用するためには以下のいずれかの作業を行います:
プロダクト: 4D
テーマ: メソッドの編集
デザインリファレンス ( 4D v14 R2)
デザインリファレンス ( 4D v13.4)
デザインリファレンス ( 4D v14 R3)
デザインリファレンス ( 4D v14.3)
デザインリファレンス ( 4D v14 R4)
Parent of : マクロの作成と利用 ( 4D v12.4)