フォームとサブフォームの通信を簡単に

4D v19 R5 より、サブフォームに変数を関連付けることができるようになり、フォームとサブフォーム間のコミュニケーションとインターフェースの可能性が豊かになりました。通信手段は、2つの新しいコマンドによって簡素化されました: OBJECT Get subform container valueOBJECT SET SUBFORM CONTAINER VALUE

HDI: 親フォームとサブフォーム間の通信

2つの新しいコマンド

新しいコマンド OBJECT Get subform container valueOBJECT 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 でのプログラミングを楽しんでください!

Roland Lannuzel
- プロダクトオーナー&4Dエキスパート -電子工学を学んだ後、産業用ITの分野で開発者兼コンサルタントとして、さまざまなデータベースやテクノロジーを使って顧客のためのソリューションを構築。80年代後半に4Dに惚れ込み、会計、請求書作成、メールシステムなどのビジネスアプリケーションの作成に4Dを使用してきました。現在も、新機能やデータベース開発ツールの定義など、4Dの未来を積極的に切り開いています。