4D v18 R5 では、プログラミングを楽にする VP SET CUSTOM FUNCTIONS という新しいコマンドを導入しました! このコマンドは、4D View Pro で 4Dフォーミュラを実行するカスタムファンクションを作成します。
このコマンドのおかげで、4D のコマンド、フィールド、変数やメソッド、または任意の式を、セルのフォーミュラとして使用できるようになりました。たとえば、4D View Pro で変数を使用するためだけにメソッドを作成する必要はなくなり、Formula に引数として渡すだけで十分です。
VP SET CUSTOM FUNCTIONS を使うことで、4D View Pro から次のものにアクセスが可能となります:
- 4D変数
- フィールド
- メソッド
- 4Dコマンド
On Load イベント中に、4D View Pro からアクセスしたい 4D式をすべて宣言する必要があります。
まず、オブジェクトを作成し、オブジェクトの属性を使って、ファンクション名を定義します:
$o:=New object
// 4D View Pro で使用されるファンクション名: "DRIVERS_LICENCE"
$o.DRIVERS_LICENCE:=New object
次に、式に基づいたフォーミュラを格納する formula 属性を追加します。この式は、セルで使用されたときに計算されます。
DRIVERS_LICENCE 関数が、以下のものを参照している場合の書き方:
- プロセス変数
$o.DRIVERS_LICENCE.formula:=Formula(DriverLicence)
- テーブルのフィールド
$o.DRIVERS_LICENCE.formula:=Formula([Users]DriverLicence)
- メソッド
$o.DRIVERS_LICENCE.formula:=Formula(DriverLicenceState)
- 4Dコマンド
$o.DRIVERS_LICENCE:=Formula(Choose(DriverLicence; "Obtained"; "Failed"))
- 4D式:
$o.DRIVERS_LICENCE.formula:=Formula(ds.Users.get($1).DriverLicence)
$o.DRIVERS_LICENCE.parameters:=New collection
$o.DRIVERS_LICENCE.parameters.push(New object("name"; "ID"; "type"; Is longint))
ファンクションの動作を説明する概要を追加することができます:
$o.DRIVERS_LICENCE.summary:="運転免許の卒業検定の結果を返します"
また、メソッドを参照する場合は、ファンクションが受けとる引数の名前や型など、いくつかのパラメーターを追加することができます:
$o.BIRTH_INFORMATION:=New object
$o.BIRTH_INFORMATION.formula:=Formula(BirthInformation)
$o.BIRTH_INFORMATION.parameters:=New collection
$o.BIRTH_INFORMATION.parameters.push(New object("name";"First name";"type";Is text))
$o.BIRTH_INFORMATION.parameters.push(New object("name";"Birthday";"type";Is date))
$o.BIRTH_INFORMATION.parameters.push(New object("name";"Time of birth";"type";Is time))
$o.BIRTH_INFORMATION.summary:="渡された情報に基づいて、フォーマットされた文字列を返します"
オブジェクトにすべての情報を入力し終えたら、4D View Pro で利用できるように VP SET CUSTOM FUNCTIONS コマンドにこのオブジェクトを渡すだけです。
VP SET CUSTOM FUNCTIONS("ViewProArea"; $o)
これで、完成です。4D View Pro で新しいカスタムファンクションが利用できます: