3

我有这段代码可以根据列数据为网格行着色(网格来自 devexpress)

var
AColumn: TcxCustomGridTableItem;
gs: variant;
begin

  AColumn := (Sender as TcxGridDBTableView).GetColumnByFieldName('COLOR');

  gs := ARecord.Values[AColumn.Index];

  if VarType(gs) and VarTypeMask = varString or varUString then
    AStyle.Color := gs; //<<<----- exception

该字段color是 varchar (firebird),包含诸如 cllime、clred 等值...但我在异常注释行出现错误“无法将类型的变体 (UnicodeString) 转换为类型 (Boolean)”。我应该改变什么?

谢谢

4

1 回答 1

9

我将用if以下内容替换您的陈述。它使用该VarIsType函数,该函数更直接地用于 Variant 类型检查,并使用该函数将存储在 Variant 变量中的字符串值转换为颜色StringToColor

...
if VarIsType(gs, [varString, varUString]) then
  AStyle.Color := StringToColor(gs);
于 2013-01-28T14:28:26.697 回答