スプレッドシートは、素晴らしい汎用性のあるツールです。ダッシュボードから入出力UI まで、4D View Pro が提供するスプレッドシートは、エンドユーザーが遭遇する多くの状況を迅速に解決することができます。
以前、4D View Pro の表組み機能 を使って、データコレクションを表示・修正する方法を紹介しました。必要に応じて、この表組みに後から列を追加・削除することが必要なことがあります。4D v19 R7 では、表組みの列と行を管理するため、いくつかの新しいコマンドが 4D View Pro に追加されました。どのように機能するか見てみましょう。
列を追加・削除する前に、まずは対象となる 4D View Pro の表組みが必要です。以下の例では、”People” というデータベーステーブルのデータを表示する 4D View Pro の表組みを作成しています。
$context:=New object
$context.people:=ds.People.all().toCollection()
VP SET DATA CONTEXT("ViewProArea"; $context)
$parameter:=New object
$parameter.tableColumns:=New collection
$parameter.tableColumns.push(New object("name"; "Phone"; "dataField"; "Phone"))
$parameter.tableColumns.push(New object("name"; "Email"; "dataField"; "email"))
$parameter.tableColumns.push(New object("name"; "Country"; "dataField"; "Country"))
VP CREATE TABLE(VP Cells("ViewProArea"; 2; 1; 3; 1); "PeopleTable"; "people"; $parameter)
表組みへの列の挿入
VP INSERT TABLE COLUMNS コマンドを使用すると、必要に応じていつでも表に列を挿入することができます。たとえば、4D View Pro の表組みの先頭列の前に新しい列を 2つ表示したい場合:
VP INSERT TABLE COLUMNS("ViewProArea"; "PeopleTable"; 0; 2;vk table insert before)
// 0 は表組みの先頭列を指します
空の列が 2つ表に追加されました。今度は VP SET TABLE COLUMN ATTRIBUTES を使ってこれらの列を Firstname と Lastname フィールドで埋めてみましょう:
$param:=New object
// データコンテキストの Firstname フィールドに列をバインドします
$param.dataField:="Firstname"
// 列のデフォルト名を "First name" に変更します
$param.name:="First name"
VP SET TABLE COLUMN ATTRIBUTES("ViewProArea"; "PeopleTable"; 0; $param)
$param:=New object
// データコンテキストの Lastname フィールドに列をバインドします
$param.dataField:="Lastname"
// 列のデフォルト名を "Last name" に変更します
$param.name:="Last name"
VP SET TABLE COLUMN ATTRIBUTES("ViewProArea"; "PeopleTable"; 1; $param)
行の挿入と削除
同じように VP INSERT TABLE ROWS コマンドを使って、テーブルに空の行を挿入することができます:
VP INSERT TABLE ROWS("ViewProArea"; "PeopleTable"; 1; 2)
VP INSERT TABLE COLUMNS とは異なり、VP INSERT TABLE ROWS の効果は見た目の変化に止まらないことに注意が必要です。VP INSERT TABLE COLUMNS は、シートに列を挿入するだけですが、VP INSERT TABLE ROWS はシートに行を挿入するだけでなく、データコンテキストのコレクション内にも新しい行を 2 つ作成します。
たとえば、この例で VP Get data context を使用すると、people コレクションに 2つの新しい空の行 (people[1] およびpeople[2]) が追加されているのがわかります。
$data:=VP Get data context("ViewProArea")
この後、挿入された空のセルに何らかのデータを書き込んだ場合:
新しいデータに対応する属性が自動的に追加されます。people[1] に追加された詳細を確認してみましょう:
データ:=VP Get data context("ViewProArea")
行を削除した場合にも、同じように動作します。たとえば、先頭の 2行を残してそれ以外をすべて削除すると、行は表組みの見た目から削除されるだけでなく、データコンテキストからもなくなります:
VP REMOVE TABLE ROWS("ViewProArea"; "contexttest"; 2; 10)
$data:=VP Get data context("ViewProArea")
このように、データコンテキスト と表組みを関連付けると、4D View Pro でコレクションを管理するのがとても簡単になります。
上記の HDI と ドキュメント で機能の詳細を確認してみてください。