データの集計
また、RecordSetを利用することでデータの集計を容易に行えます。RecordSetはデータを管理するためのクラスですが、このクラスを使用する大きな利点として「配列のようなイテレーションが可能」「データの変更をイベントで通知できる」という特徴が挙げられます。
これらの特徴を利用することによって、「RecordGridでデータが操作されたときに自動で合計金額を更新する」といった機能が実装できるようになります。下記のサンプルコードは、RecordSetにイベントを組み込むことで、売上合計(Subtotal)の合計値を自動で更新する処理を組み込んでいます。サンプルコードのコメントを記述している箇所がそれに該当します。
{let summary:int = 0}
{let people:RecordSet =
{RecordSet
(省略),
||RecordsChangedでレコード更新のイベントを捕捉します。
{on RecordsChanged do
set summary = 0
||for文でRecordSetの内容を参照します。
{for record:Record in people do
{if record.state != RecordState.deleted
then
set summary = summary + (record["Subtotal"] asa int)
}
}
{popup-message summary}
}
}
}
||データを表示するRecordGridを定義します。
{let rg:RecordGrid =
{RecordGrid
height = 3cm, width = 10cm, record-source = people
}
}
{value rg}
このサンプルを実行してデータを更新すると、次のように合計額がポップアップ表示されます。

まとめ
見積デモはこのようなRecordGridとRecordSetの機能を利用してGUIの実装が行われています。
次回は見積デモのドラッグ&ドロップの機能について見ていきたいと思います。

