4D View Pro: コレクションを表組みとして表示

ご存知のように、4D View Pro では、データを簡単に読み込んでスプレッドシートに表示することができます。
4D v19 R6 では、さらにエキサイティングなお知らせがあります。このブログ記事では、ヘッダー、表サイズ変更、合計行、並べ替え、フィルターなどの追加機能の恩恵が受けられるほか、より多くのことができるようになった新しい 表組み 機能をご紹介します。また、データクラスやコレクションから素早くデータを読み込む方法も紹介します。デモでは具体的なサンプルと、おまけのビジュアルチャートも提供していますので、お見逃しなく。

HDI: 4D View Pro: 表組みとデータコンテキスト

表組みを作成するには方法が 2つあります:

 

新しい VP CREATE TABLE コマンド

表組みを手動で作成する

最初に、ソースのない表組みを作成する必要があります。新しい VP CREATE TABLE コマンドを使用し、表組みの範囲を引数として渡します:

VP CREATE TABLE(VP Cells("ViewProArea"; 1; 1; 3; 4); "EmptyTable")

デフォルト名のカラムを持つ空のテーブルが作成できました:

次に、VP SET VALUES コマンドを使用して表の中身を埋めていきます:

$data:=New collection
// タイトル 
$data.push(New collection("First Name"; "Last Name"; "Score"))
// データ
$data.push(New collection("Andrea"; "Butterfield"; "70"))
$data.push(New collection("Faye"; "Back"; "100"))
$data.push(New collection("Shane"; "Frazier"; "50"))

VP SET VALUES(VP Cell("ViewProArea"; 1; 1); $data)

コレクションの値が表組みに表示されました:

blank

これで、フィルタリングやソートが簡単にできるようになりました:

blank

データコンテキストを元に作成する

エンティティセレクションを表組みとして表示するには:

blank

エンティティセレクションをコレクションに変換し、それをシートのデータコンテキストに追加し、列を定義して、表組みを作成する必要があります。

まず、表示するデータのコレクションを含む データコンテキスト を作成する必要があります。以下の例では、データベースからデータを読み込んでコレクションに変換し、それをオブジェクトにカプセル化しています:

$p:=ds.People.all().toCollection()

$data:=New object
$data.people:=$p

VP SET DATA CONTEXT("ViewProArea"; $data)

データコンテキスト が作成できたので、次は表示する列を定義します:

$parameter:=New object
$parameter.tableColumns:=New collection
$parameter.tableColumns.push(New object("name"; "First name"; "dataField"; "Firstname"))
$parameter.tableColumns.push(New object("name"; "Last name"; "dataField"; "Lastname"))
$parameter.tableColumns.push(New object("name"; "Email"; "dataField"; "email"))
$parameter.tableColumns.push(New object("name"; "Birthday"; "dataField"; "Birthday"; "formatter"; "dddd dd MMMM yyyy"))
$parameter.tableColumns.push(New object("name"; "Country"; "dataField"; "Country"))

あとは、VP CREATE TABLE コマンドを使う際に、データコンテキスト の people属性に格納されているコレクションを表示したいことを示します。

// 表組みを作成します
VP CREATE TABLE(VP Cells("ViewProArea"; 1; 1; $parameter.tableColumns.length; 1); "ContextTable"; "people"; $parameter)
// 列の幅を自動設定します
VP COLUMN AUTOFIT(VP Column($area; 0; 4))

blank

上記の HDI で、これらのコマンドの動作を確認してください。また、詳細については ドキュメント を参照ください。

Fabrice Mainguené
- Product Owner -Fabrice Mainguenéは、2016年11月に4D Programチームに参加しました。プロダクトオーナーとして、彼はユーザーストーリーを書き、それを機能仕様に変換する役割を担っています。CNAMでコンピュータサイエンスの学士号を取得した後、FabriceはWindev開発者として小さなソフトウェア出版社に入社しました。その後、彼は産業および貿易分野のさまざまな企業で、Windev および Web 開発者として、また新機能の技術アドバイザーとして働きました。