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、Accuracer、Absolute Database ......但不适用于 SQL Server Express 2014。而且我不知道可能出了什么问题。

数据库中的“完成”字段是“位”数据类型(布尔字段的 SQL 服务器版本)。值通常是 0 或 1。在 cxGrid 中,它是复选框类型。Cxstyle1 的颜色为 clRed,cxstyle2 的颜色为 clLime。

当应用程序运行时,列中的所有字段(选中或未选中)都是彩色的 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 回答