4Dではプログラムを使用してアプリケーションのメソッドコンテンツにアクセスできます。この機能を使用すれば、アプリケーションのコードコントロールツール、特にバージョンコントロールシステム (VCS) への統合が容易になります。またコードのドキュメント化やカスタマイズされたエクスプローラー、ディスクファイルへの定期的なコードバックアップを実装できるようになります。
以下の原則が適用されます:
- 4Dアプリケーション内の各メソッドやフォームはパス名形式で固有のアドレスを持ちます。例えばtable_1のトリガーメソッドは"[trigger]/table_1"で見つけることができます。各オブジェクトパス名はアプリケーション内でユニークです。
注: パス名がユニークであることを保証するために、異なるフォームページ上であったとしても同じ名前のオブジェクトを作ることはできません。4D v13より前から変換されたデータベースでこの状況が発生している場合、MSCはこのような重複した名前を検出します。
- このテーマのコマンドのほとんどはインタープリターモードとコンパイルモード両方で動作します。しかしプロパティを変更したり、メソッドから実行可能なコンテンツにアクセスするコマンドはインタープリターモードでのみ利用可能です (後述の表参照)。
- このテーマのコマンドはすべて4Dローカルモードおよびリモートモードで使用できます。
しかし特定のコマンドはコンパイルモードで使用することができません。このテーマのコマンドの目的はカスタマイズされた開発サポートツールを作成することにあります。実行中のデータベースの機能を動的に変更するために使用してはなりません。例えばカレントユーザーのアクセス権に基づきMETHOD SET ATTRIBUTEコマンドでメソッド属性を変更するというようなことはできません。
- このテーマのコマンドがコンポーネントから呼ばれた場合、デフォルトでその呼び出しはコンポーネントオブジェクトにアクセスします。コンポーネントからホストデータベースオブジェクトにアクセスする場合は最後に引数に * を渡します。なお (METHOD SET ATTRIBUTEのような) メソッド属性を変更するコマンドを使用する場合、必ずこのシンタックスを使用しなければならない点に留意してください。コンポーネントメソッドは常に読み込みのみモードです。
コンパイルのプロセスの原理に関係した理由上、コンパイルモードではこのテーマのコマンドは一部しかご利用いただけません。以下は、このテーマのコマンドについて、コンパイルモードで利用可能かどうかを示した表です:
(*) コンパイルモードでこれらのコマンドを使用するとエラー -9762 "このコマンドをコンパイル済みデータベースで実行できません。" が生成されます。
デフォルトで4Dはディスクファイルを作成することはしません。しかしオブジェクトのために作成されたパス名はOSのファイル管理システムと互換性があります。読み込みや書き出しメソッドを作成し、パス名を使用してディスクに直接ファイルを生成できます。
":"のような使用不可文字はエンコードされます。以下はエンコードが行われる文字のリストです:
文字 | エンコーディング |
" | %22 |
* | %2A |
/ | %2F |
: | %3A |
< | %3C |
> | %3E |
? | %3F |
| | %7C |
\ | %5C |
% | %25 |
例:
Form?1 は Form%3F1 にエンコードされます
Button/1 は Button%2F1 にエンコードされます。