Delphi'无法将类型(UnicodeString)的变体转换为类型(布尔值)

时间:2013-01-28 14:10:16

标签: delphi

我有这个代码根据列数据为网格行着色(网格来自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)转换为类型(布尔)'在具有异常注释的行。我应该改变什么?

由于

1 个答案:

答案 0 :(得分:9)

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

...
if VarIsType(gs, [varString, varUString]) then
  AStyle.Color := StringToColor(gs);