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

Wel*_*Wel 3 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
Run Code Online (Sandbox Code Playgroud)

字段color是varchar(firebird)包含像cllime,clred等的值......但是我在错误注释的行中得到错误'无法将类型的变体(UnicodeString)转换为类型(布尔)'.我应该改变什么?

谢谢

TLa*_*ama 9

我会用if以下内容替换你的陈述.它使用VarIsType函数,它更直接用于Variant类型检查,它通过使用StringToColor函数将存储在Variant变量中的字符串值转换为颜色:

...
if VarIsType(gs, [varString, varUString]) then
  AStyle.Color := StringToColor(gs);
Run Code Online (Sandbox Code Playgroud)