新しいデータソースコマンドを使った動的なフォーム作成

アプリケーション開発では、しばしばフォームを動的に作成する必要があります。たとえば、ユーザーのニーズに合わせて、その場で検索フォームを生成したい場合があります。4D では、ダイナミックフォームを構築するために大きく分けて 2つのアプローチがあります: フォーム全体をプログラムで構築するか、既存のフォームレイアウトにオブジェクトを追加するかです。これまでは 2つ目の方法として、従来のポインターを使ったやり方で、オブジェクトを OBJECT DUPLICATE でオブジェクトを複製し、OBJECT SET DATA SOURCE でデータソースを変更することが可能でした。

4D 20 R10 では、OBJECT SET DATA SOURCE FORMULAOBJECT Get data source formula という新しい強力なコマンドが追加され、フォームオブジェクトのデータソースとしてフォーミュラをバインドすることができます。さらに、LISTBOX SET PROPERTY コマンドを使用すると、カレントの項目カレントの項目の位置選択された項目など主要なリストボックスのプロパティにフォーミュラを動的に割り当てることができます。

これにより、Form.xx やクラスのような式を利用して、よりモダンで柔軟で読みやすいアプローチへの道が開かれます。

HDI: データソースにフォーミュラを設定

データソースプロパティを操作する新しいコマンド

データソースプロパティを変更する新しいコマンドが2つ追加されました:

OBJECT SET DATA SOURCE FORMULA ( {* ;} object ; formula)
OBJECT Get data source formula ( {* ;} object) : formula

例題 1: フォーミュラの編集

フォームに “myInput” というテキスト入力があり、そのデータソースに “Form.myText” というフォーミュラをバインドしたいとします。

$myFormula:=Formula(Form.myText)
OBJECT SET DATA SOURCE FORMULA(*; "myInput"; $myFormula)

例題 2: フォーミュラの取得

“myInput” という名前のテキスト入力のようなフォームオブジェクトに関連付けられたフォーミュラを取得するには、次のように書きます:

$formula:=OBJECT Get data source formula(*; "myInput")

これらの新しいコマンドは、動的に設定できる汎用的で再利用可能なフォームテンプレートの作成を容易にします。

リストボックスの拡張機能

カレントの項目カレントの項目の位置選択された項目のプロパティは、LISTBOX Get propertyLISTBOX SET PROPERTY コマンドと以下の定数を使用することでアクセスできます:

  • lk current item expression
  • lk current item pos expression
  • lk selected items expression

 

LISTBOX SET PROPERTY(*; "myListBox"; lk selected items expression; "Form.selectedItems")

まとめ

OBJECT SET / GET DATA SOURCE FORMULA と新しい listbox プロパティ定数により、4D は動的インターフェースを構築するための、新しくエレガントでパワフルな方法を提供します。

フォーミュラとオブジェクト指向プログラミングを取り入れることで、より適応性が高く、保守性が高く、読みやすいフォームを作成できるようになりました。

Vanessa Talbot
- プロダクトオーナー - Vanessa Talbotは、2014年6月に4Dプログラムチームに参加しました。プロダクトオーナーとして、彼女はユーザーストーリー(ユーザーが期待する新機能とその使用法)を書き、それを具体的な機能仕様に変換する役割を担っています。また彼女の役割は、実装された機能が顧客のニーズを満たしているかどうかを確認することでもあります。入社以来、4Dにおける主要機能の定義に関わってきました。プリエンプティブ/マルチスレッドの新機能の大部分と、非常に複雑なテーマである組み込みアプリケーションの新アーキテクチャに取り組んできました。VanessaはTelecom Saint-Etienneで学位を取得後、Criminal Research Institute でオーディオビジュアル部門の開発者としてキャリアをスタートさせました。また、メディアや医療の分野でも、技術サポートやプロダクションの分野で働いてきました。