データの集計
また、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の実装が行われています。
次回は見積デモのドラッグ&ドロップの機能について見ていきたいと思います。
この記事は参考になりましたか?
既に会員の方はを行ってください。
- CurlデベロッパーセンターPick Up連載記事一覧
- この記事の著者
-
株式会社カール 宮崎 直人(カブシキガイシャカールミヤザキナオト)
リッチクライアント言語『Curl』の普及に努め、自社主催のセミナーの講師や導入コンサルタントなどを担当。現在はマーケティングにも携わり、HPの更新やコンテンツの拡充なども行っている。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社
この記事は参考になりましたか?
この記事をシェア
