フォームを開いてパラメータを渡すだけで、フォームオブジェクトを初期化することができたら、素晴らしいと思いませんか?4D v16 R5 は、フォームとの通信を大幅に簡略化することで、あなたのコーディングをとても簡単にしてくれます。
今までは、複数のユーザーにデータ(データベース自体から来るものではなく、計算されたものや外部からのもの)を表示したい場合、複数のプロセスでデータ表示を処理する複雑なコードを書くか、たくさんのグローバル変数を使って必要なだけフォームを作成するかの2つの選択肢がありました。しかし、グローバル変数がメモリの観点から最適化されたコーディング方法でないことはご存知の通りです。
そこで、複雑なコードとグローバル変数から解放されましょう!4D v16 R5 では、オブジェクトをフォームにバインドし、新しい Form コマンドでそれを内部的に使用することができます。簡単で…そして強力です!
フォームにパラメータを渡す
オブジェクト内のパラメータをフォームに渡すために DIALOGコマンドを使用して、オブジェクトのパラメータをフォームに渡すことができるようになりました。このオブジェクトの任意のプロパティは、フォームのコンテキストから Formコマンドで利用できます。
C_LONGINT($window)
C_OBJECT($address)
$address:=Newobject
$address.CompanyName:="4D"
$address.LastName:="Dupont"
...
$window:=Openform window("AddressForm";Movable form dialog box)
// パラメータに $address オブジェクトを指定してフォームを開く
// Form コマンドでフォーム内の $address オブジェクトを変更できる
DIALOG("AddressForm";$address)
CLOSE WINDOW($window)
ALERT("New company name is: "+$address.CompanyName" )
AddressForm”フォームでは、フォームオブジェクトのデータソースで Formコマンドを使うだけで、フォームオブジェクトのデータソースを作成できます。
ユーザーがダイアログを閉じたとき、入力された値は$address オブジェクトを介して呼び出し側のメソッドで利用できます。
サブフォームにパラメータを渡す
コマンドでオブジェクトをフォームに渡すのと同じように、 オブジェクトをフォームに渡すこともできます。 DIALOGコマンドでフォームにオブジェクトを渡すのと同じように、プロパティリストを使ってサブフォームエリアにオブジェクトを渡すこともできます。そして、サブフォームの中で、そのオブジェクトを Formコマンドで使用できます。以下の例では、InvoiceAddress オブジェクトがサブフォームにバインドされています。