ダイナミックフォームで汎用フォームを作成する方法

Deeplからの自動翻訳

データベースには、タイプやカテゴリーを表すいくつかのテーブルがあると想像してください。これらのテーブルは非常にシンプルで、多くの場合、識別子とテキストフィールドだけです。デモのために、靴の管理データベースだとしましょう。商品を認定するためには、その種類、色、柄、素材、季節などを定義する必要があります。

これらのテーブルをそれぞれリストフォームと入力フォームと関連するメソッドで管理するのは面倒です。この場合、重複を避け、メンテナンスを簡略化するために、汎用フォームの利用が不可欠となります。

そこで便利なのが、ダイナミックフォームと JSONポインタなのです

このブログ記事では、汎用的なフォームを構築するための一つの可能性を見ていきます。

データベースの例

このデータベースでは、下図のように5つの異なるダイアログを開くことができます。しかし、デザインモードに戻ると、4Dエクスプローラーにフォームが見当たらないことに気づきます…。

では、これらのフォームはどのように作成されているのでしょうか?

以下に説明する3つのステップで行います。

1.まず、リストフォームを作成し、JSONファイルに保存します。テーブルやフィールドの具体的な情報は、JSONのポインターを使用します。例えば、ウィンドウのタイトルにテーブル名を書き込むとします。ダイナミック・フォームでは、入力するだけでよい。

"windowTitle": { "$ref": "#/info/table" }

別の例では、リストボックスに、カラムのデータソースを定義したいので、次のように記述します。

"dataSource": { "$ref": "#/info/field1" }

2.そして、実行時に、ユーザーがメニュー項目をクリックすると、ユーザーが選択したフィールドを持つテーブルを定義するオブジェクトを注入します。

C_OBJECT($o;$info)
$info :=New object("table";$table; "field1";"["+$table+"]"+"ID"; "field2";"["+$table+"]"+"Name")
$o :=JSON Parse(Document to text("RESOURCES/Form/CategoryOutputForm.json")
$o .info:=$info

3.3. フォームを開くには、特別なことは何も必要ありません。 Open form windowコマンドを使うだけです。ただひとつ覚えておいてほしいのは、4DがJSONポインタを解決して Open form windowコマンドを呼び出すときに、4DがJSONポインタを解決することです。

$ref:=Open form window($o;Plain form window)

入力フォームでも同じことができます。そして、今度は自分で試してみてください

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