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)のバリアントをタイプ(ブール)に変換できませんでした」というエラーが発生します。何を変更すればよいですか?

ありがとう

4

1 に答える 1

9

if私はあなたの声明を次のように置き換えます。これは、VarIsTypeVariant型のチェックをより簡単に行う関数を使用し、次のStringToColor関数を使用してVariant変数に格納されている文字列値を色に変換します。

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