RecordGrid 行の背景色制御について - Printable Version +- Curl Global Community (https://communities.curl.com) +-- Forum: Discussions (https://communities.curl.com/forumdisplay.php?fid=1) +--- Forum: General Curl questions (https://communities.curl.com/forumdisplay.php?fid=2) +--- Thread: RecordGrid 行の背景色制御について (/showthread.php?tid=893) |
RecordGrid 行の背景色制御について - e.kou - 05-02-2013 レコードグリッドの行の背景色制御ですが、 下記の例のように「Notified」の値の変動によって変わると思いますが 「Notified」のデータ抽出時のみの値で判断して、色を付けたいのですが可能でしょうか? 例: {include "../../default/support/data-long.scurl"} {define-proc public {notified rg:RecordGrid, r:Record, i:int}:#Background {if {r.compare-field "Notified?", true} == 0 then {return {Background.from-string "silver"}} else {return null} } } {RecordGrid record-source = records, height = 10cm, width = 13cm, row-background-spec = notified } RE: RecordGrid 行の背景色制御について - dyoshida - 05-08-2013 レコードグリッドに読み込んで編集する前の値で判定して色をつけたいという意図でしたら、 例にあげられていた notified プロシージャをこのように変えてみてはどうでしょうか? Code: {define-proc public {notified rg:RecordGrid, r:Record, i:int}:#Background CodeZineの掲載記事(*1)をみると、レコードグリッドで表示される行は表示される可能性が でてきた際に随時作られているようなので、背景色設定のプロシージャもそのタイミングで 呼ばれるのではないかと思います。 このため、row-background-spec に指定したプロシージャが呼ばれた時点では、既に レコードの値が更新されている可能性がありますが、幸い Recordクラスの get メソッドの 引数 pending? に false を指定すれば 更新前の値を取得できるようなので、この値を 参照して判定してみました。 ただし、レコードセットがレコードグリッドに読み込む前にプログラムや他のレコードグリッド 等で更新されていると期待しない結果になりそうですので、読み込むレコードセットは未更新 または更新されたレコードがcommitされている事が前提になりそうです。 *1:全機能を使い倒せ!大量データもグラフィカルに表示するCurlコントロール「RecordGrid」マニア http://codezine.jp/article/detail/6113 RE: RecordGrid 行の背景色制御について - umemura - 05-09-2013 Notified? の値をユーザに書き換えられてしまうことが問題なのであれば、 Notified? とは別のフィールド(HiddenNotifiedなど)を用意して、グリッドにカラムとして表示しない、というのも手かもしれませんね。 RE: RecordGrid 行の背景色制御について - dyoshida - 05-10-2013 >Notified? とは別のフィールド(HiddenNotifiedなど)を用意して、グリッドにカラムとして表示しない、というのも手かもしれませんね。 レコードから更新前の値を取り出す方法を書いてみたものの、そちらの方法の方が安全確実でよさそうですね ある任意の状態でのNotified?の値をずっと参照したいというケースでも、そのタイミングでHiddenNotifiedへ転記すれば済みますし。 試しに隠しフィールドを使う方法でコードを書いてみましたがこんな感じでしょうか? Code: {include "../../default/support/data-long.scurl"} |