RecordGridで任意のセルに色をつけたい場合は、RecordGridCellをカスタマイズする必要があります。
ここでは、データを更新したセルに色をつける実装方法について紹介します。
サンプルソース
{define-class public ColorCell {inherits StandardStringCell}
{constructor public {default} {construct-super} }
||セルの色を制御するにはrefresh-dataメソッドを ||オーバーライドします。 {method public {refresh-data}:void
||スーパークラスのメソッドを呼び出します。 {super.refresh-data}
{if-non-null record:Record = self.record then ||当該セルのデータが更新された場合に、 ||背景色を設定します。 {if {record.field-pending-update? self.column.field-name} then set self.background = “pink” } } }
}
{let people:RecordSet = {RecordSet {RecordFields {RecordField “First”, domain = String}, {RecordField “Last”, domain = String}, {RecordField “Age”, domain = int} }, {RecordData First = “John”, Last = “Smith”, Age = 25}, {RecordData First = “Jane”, Last = “Smith”, Age = 29}, {RecordData First = “Jane”, Last = “Jones”, Age = 28} } }
||データを更新します。 {do let r:Record = {non-null {people.select-one}}
{r.set “Last”,”Update”} }
{value {RecordGrid record-source = people, height = 3cm, ||cell-specで上記で作成したセルを指定します。 cell-spec = ColorCell } }
|
これを実行すると、以下のような結果が表示されます。データを編集すると、編集したセルの色がピンクになります。