【ご質問】
RecordGridのある行のテキスト色・背景色を変更した場合に、
スクロールバーを上下させると、異なる行の色が変わってしまいます。
どのようにすれば特定行のみ変更されるのでしょうか。
【回答】
APIリファレンスの[CURL.GUI.CONTROL-LOGICAL]-[RecordGridUI]
の項内のメソッド[get-cell-at-index]の項にも記述されていますように、
セルは使い回しが行われます。
そのため、特定行のセルを変化させたつもりでも、セルが使い回されるため
何か操作した際(スクロールバーの移動等)に別のデータを表示することとなり、
別のデータの色が変化してしまうことがあります。
カスタムセルを使用することで、今回の現象を解決することができます。
詳細は以下のサンプルをご参照ください。
{curl 6.0,7.0,8.0 applet} {define-class public ControlCell {inherits StandardStringCell} {constructor public {default} {if rec == self.record then {let data:RecordSet = {let grid:RecordGrid = {let no:int = 1} || 色変更ボタン {View |
また、Curl開発者ガイドの
[データの管理と表示]-[データ レコードとグリッド]-[カスタム セルの作成]
の項をご参照ください。