ご存知のように、4D View Pro では、データを簡単に読み込んでスプレッドシートに表示することができます。
4D v19 R6 では、さらにエキサイティングなお知らせがあります。このブログ記事では、ヘッダー、表サイズ変更、合計行、並べ替え、フィルターなどの追加機能の恩恵が受けられるほか、より多くのことができるようになった新しい 表組み 機能をご紹介します。また、データクラスやコレクションから素早くデータを読み込む方法も紹介します。デモでは具体的なサンプルと、おまけのビジュアルチャートも提供していますので、お見逃しなく。
HDI: 4D View Pro: 表組みとデータコンテキスト
表組みを作成するには方法が 2つあります:
- 空の表組みを作成し、セルごとに既存のコマンド VP SET VALUES または VP SET VALUE を使用して中身を設定する。
- データコンテキスト に含まれるコレクションから 自動的に表組み を作成する。
新しい 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)
コレクションの値が表組みに表示されました:
これで、フィルタリングやソートが簡単にできるようになりました:
データコンテキストを元に作成する
エンティティセレクションを表組みとして表示するには:
エンティティセレクションをコレクションに変換し、それをシートのデータコンテキストに追加し、列を定義して、表組みを作成する必要があります。
まず、表示するデータのコレクションを含む データコンテキスト を作成する必要があります。以下の例では、データベースからデータを読み込んでコレクションに変換し、それをオブジェクトにカプセル化しています:
$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))
上記の HDI で、これらのコマンドの動作を確認してください。また、詳細については ドキュメント を参照ください。