4D v19 R5 より、サブフォームに変数を関連付けることができるようになり、フォームとサブフォーム間のコミュニケーションとインターフェースの可能性が豊かになりました。通信手段は、2つの新しいコマンドによって簡素化されました: OBJECT Get subform container value と OBJECT SET SUBFORM CONTAINER VALUE。
2つの新しいコマンド
新しいコマンド OBJECT Get subform container value と OBJECT SET SUBFORM CONTAINER VALUE は、サブフォームのコンテキストで使用する必要があります。
一つ目のコマンド OBJECT Get subform container value は、On Bound Variable Change イベントが発生したとき、つまりサブフォームに関連付けられた親フォームの変数 (または式) が変更されたときに、この新しい値を読み取るために使われることが多いでしょう。
二つ目のコマンド OBJECT SET SUBFORM CONTAINER VALUE は、サブフォームに関連付けられた親フォームの変数 (または式) の値をサブフォームから変更する場合に使用します。
なぜこのようなコマンドがあるのでしょうか
これまで、この情報を得るには、2つの方法がありました。
最も単純な (そして最も新しい) 方法は、オブジェクト型の変数をサブフォームに関連付けることです。この場合、このオブジェクトの属性は、サブフォーム内の Form 関数経由で直接アクセスできます。これはうまくいく方法ですが、単純な値しか必要ないときにオブジェクトを使用するのは、必ずしもグッドプラクティスとは言えません。
もう一つの方法 (より歴史的な) 方法は、OBJECT Get pointer のコマンドで Object subform container パラメーターを指定して、当該変数へのポインターを作成する方法です。これも一つの方法ですが、サブフォームに 変数 が関連付けられている場合に限ります。残念ながら、式 (例: Form.myValue) の場合は、式へのポインターを作成することができないため、この方法は使えません。
そのため、この 2つの新コマンドは、単純なケースでは最も便利でわかりやすい解決策になります! 最も一般的なケースでは、これによってプログラミングを簡略化することができます。コードはより読みやすくなり、保守も容易になります。
4D でのプログラミングを楽しんでください!