多階層コレクションを異なるリストボックスで表示する方法!

Deeplからの自動翻訳

4D v17から、マルチレベル・コレクションのコンテンツを、異なるリストボックスに簡単に表示することができるようになりました。つまり、複数のリストボックスをバインドして、ネストされた詳細を表示することができます…一行のコードも必要ありません!これは、オブジェクトまたはコレクションを別のリスト ボックスのデータ ソースとして使用することで実現できます。

新しいリストボックスのコレクションタイプには“Current item”“Selected items”のプロパティが追加されています。Current item “プロパティはオブジェクトを取得でき、”Selected item “プロパティはコレクションを返すことを覚えておいてください。

では、具体的な例として、血液検査の結果を表示する方法を確認してみましょう

データベースの例

中身は?

最初のレベルでは、患者の名前、検査の日付、医師の名前があります。そして、結果はカテゴリーごとに分類されています。各カテゴリには、結果値、最小値、最大値、および単位を持つ検査のリストがあります。

データ構造としては、第一レベルの属性 firstname,lastname など)を持つオブジェクトと、カテゴリオブジェクトのコレクションがあります。そして、各カテゴリオブジェクトに対して、テストオブジェクトのコレクションがある。要約すると

{
  "lastname": "Beal",
  "firstname": "Estele",
  ...,
  "results": [{
    "category": "Metabolic",
    "test": [
      { "name": "Albumin", "value": ... },
      { "name": ... }]
  }, {
    "category": "Lipoprotein",
    "test": [
      { "name": "HDL", "value": ...  },
      { "name": ... }]
  }, {...}]
}

以下のスキーマは、オブジェクト入力の横にある2つのリストボックスに結果がどのように表示されるかを記述しています。これだけのことが……一行のコードもなしにできるのです!実際、すべてのプロパティはフォームオブジェクトの中で定義されており、コーディングが必要なのは結果をロードするときだけです。以上、皆さん、いかがでしたか??

ご覧のように、この例では血液検査の結果を読みやすく、理解しやすくしています。特に、間違ったデータを色鮮やかにハイライトしている場合はなおさらです。

そのために、以下のDecorateメソッドをリストボックスのプロパティのmeta式に関連付けました。

If ( . >( . *2)) := . . (( . > . ) | ( . < . )) := . . ThisvalueThismax
$0FormmetadoubleOutOfRange
Else
IfThisvalueThismaxThisvalueThismin
$0FormmetaoutOfRange

Else := . .
$0FormmetaperfectValue

End if
End if

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