11-09-2015, 12:52 PM,
|
|||||
|
|||||
グリッド選択行の条件付き背景色制御
グリッドにおいて次のような背景色制御を行おうとしています。
1. データの変更有無、行の遇奇等による表示制御を行う 2. 現在選択している行は 1. に従わず、常に背景色を青にする 3. ただし、現在選択している行の内、現在選択しているセルの背景色は青にはせず 1. に従って制御を行う。 カスタム セル クラスの refresh-data で self.edit-active? を見て背景色を制御することで 概ね実現できたのですが、3. の仕様について、 フォーカスを得た後値を入力せずにフォーカス遷移した場合に正しく動作しませんでした。 ・マウスで同じ行の別のセルを選択:1つ前に選択されていたセルの背景色が青に戻らない ・Tabでフォーカス移動:それまで選択されていたセルの背景色が青に戻らない ※ 値を入力してからフォーカスを移動した場合は正しく制御されます。 どのように修正したらよいでしょうか? || カスタム セル クラス {define-class public AmountCell {inherits StandardStringCell} ... {method public {refresh-data}:void || バッチイベント中は再描画しない {if-non-null self.grid, self.grid.record-source then {if self.grid.record-source.batch-events? then {return} } } || 基底の処理 {super.refresh-data} || 再描画処理 {self.get-screen-for-grid} {if self.screen == null then {return} } {self.control-focus-acceptablity} {self.control-bg-color} || このメソッドが背景色制御 {self.control-font} } ... ||############################################################ || 背景色制御 ||############################################################ {method protected {control-bg-color}:void {if not {self.ready-to-control?} then {return} } let r:Record = self.grid.records[{self.screen.first-index-of-group self.record-index, {non-null self.record}}] || 選択行のルールは他の全てに優先する {if {self.do-selected-background-control {non-null self.record}} == true then {return} } set self.background = {Background.from-Color {self.do-base-background-control r}} } ... ||############################################################ || 選択行の背景色制御 (他のすべての制御に優先する) ||############################################################ {method protected {do-selected-background-control r:Record}:bool || self.record や self.screen の null チェックはこの中で行っている {if not {self.ready-to-control?} then {return false} } || 現在選択されている行と同一グループの行は全て選択表示 {if self.group-selected? then || 選択されているセルは選択反転しない {if self.edit-active? then {return false} } set self.background = self.selected-background {return true} else || レコードグリッドの現在レコードが取得できなければ非選択として表示する {return false} } } ... } |
|||||
11-09-2015, 02:38 PM,
|
|||||
|
|||||
RE: グリッド選択行の条件付き背景色制御
すみません、自己解決してしまいました。 カスタム セル クラスの note-grid-focus-out にてフォーカス アウト時にも背景色制御を行うようにしたところ、 意図した通りの動作になりました。 ||############################################################ || 選択されているセルの表示制御を反映する ||############################################################ {method public {note-grid-focus-out}:void {super.note-grid-focus-out} {self.control-bg-color} {self.control-font} } ありがとうございました。 |
|||||
« Next Oldest | Next Newest »
|
Users browsing this thread:
1 Guest(s)
1 Guest(s)