0

これが SQL Server Express 2014 で機能しない理由がわかりません:

procedure TMainForm.cxGrid1DBTableView1DONEStylesGetContentStyle(
  Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
  AItem: TcxCustomGridTableItem; var AStyle: TcxStyle);
  var AColumn: TcxCustomGridTableItem;
begin
AColumn := (Sender as TcxGridDBTableView).GetColumnByFieldName('DONE');
if  VarToStr(ARecord.Values[AColumn.Index]) = '0' then
AStyle := cxstyle1 else AStyle := cxstyle2;
end;

SQLite、Firebird、Accurcer、Absolute Database では動作しますが、SQL Server Express 2014 では動作しません。何が問題なのかわかりません。

データベースの「DONE」フィールドは、「ビット」データ型 (ブール型フィールドの SQL Server バージョン) です。通常、値は 0 または 1 です。cxGrid では、チェックボックス タイプです。cxstyle1 の色は clRed で、cxstyle2 の色は clLime です。

アプリケーションが実行されると、列のすべてのフィールド (チェックされているかどうかに関係なく) が色付けされます。私が間違っていることはありますか?

4

1 に答える 1

0

SQL Server BIT は、ブール値として Delphi に導入されます。試す:

if ARecord.Values[AColumn.Index] then
  AStyle := cxstyle1 
else 
  AStyle := cxstyle2;
于 2014-11-10T05:56:19.407 に答える