一部のフィールドの値に基づいて一部のフィールドの背景色を変更する cxGrid があります。これはすべて非常にうまく機能しています。しかし、グリッド データで何かを変更すると、フォームを閉じて再度開く前に色が更新されません。
レコードが変更されている場合、これを更新するために呼び出す手順は何ですか?
一部のフィールドの値に基づいて一部のフィールドの背景色を変更する cxGrid があります。これはすべて非常にうまく機能しています。しかし、グリッド データで何かを変更すると、フォームを閉じて再度開く前に色が更新されません。
レコードが変更されている場合、これを更新するために呼び出す手順は何ですか?
私の経験では、行を切り替えると更新されます。しかし、TClientDataSet を使用して DB モードで使用しました。
のような方法を確認してください
ノードを無効にすることもできます:
のようなイベント
また、これらの項目を (Invalidate メソッドを使用して) パラメーター間またはパラメーター内で公開します。
つまり、cxTL ユニットを開き、"invalidate" 単語を grep して、すべての一致を記録します。
グリッドがデータ セットにアタッチされていて、データセット内のデータが変更された場合、OnGetContentStyle イベントが自動的に呼び出されます。データが更新されたことをデータセットが認識していることを確認してください。編集フォームがグリッド データセットにそれ自体を更新するように指示していないようです。これは、コールバック プロシージャを使用するか、オブザーバー パターンを実装することで実行できます。
次のコードは、グリッド列の OnGetContentStyle イベントを実装する方法を示しています。
procedure TFormWithGrid.cxGrid1DBTableView1LASTNAMEStylesGetContentStyle(
Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
AItem: TcxCustomGridTableItem; var AStyle: TcxStyle);
begin
if ARecord.Values[cxGrid1DBTableView1FIRSTNAME.Index] = 'test' then
begin
AStyle := TcxStyle.Create(nil);
AStyle.Color := clRed;
AStyle.Font.Style := [fsBold];
end;
end;