我有这个代码根据列数据为网格行着色(网格来自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)转换为类型(布尔)'在具有异常注释的行。我应该改变什么?
由于
答案 0 :(得分:9)
我会用以下内容替换您的if
语句。它使用VarIsType
函数,它更直接用于Variant类型检查,并使用StringToColor
函数将存储在Variant变量中的字符串值转换为颜色:
...
if VarIsType(gs, [varString, varUString]) then
AStyle.Color := StringToColor(gs);