Почему это неправильно

У меня есть следующий код

procedure TfrmJsApplications.colMaintStylesGetContentStyle(
  Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
  AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);
var
  aColumn: TcxCustomGridTableItem;
  aValue: Variant;
begin
  inherited;
  try
    aColumn := Sender.FindItemByName('colApplication_Doc');
    aValue := aRecord.Values[aColumn.Index];
    if VarToStr(aValue) <> '' then
      colMaint.Properties.Buttons[0].Caption := 'Redigere'
    else
      colMaint.Properties.Buttons[0].Caption := 'Opret'
  except
    on E:exception do
      Logfile.Error('F_JsApplications.colMaintStylesGetContentStyle: ' + E.Message);
  end;

работает на столбце в cxGrid. Но по какой-то причине я просто не могу понять линию

if VarToStr(aValue) <> '' then

делает функцию сбой. Я знаю, что это когда aValue становится нулевым значением, но насколько я могу понять, VarToStr должен возвращать '' в этом случае

1 ответ

aValue вероятно нет NULL но empty, Попробуйте использовать проверку как

if(FindVarData(aValue)^.VType in [varNull, varEmpty])then ...

вместо. Или же

if VarIsEmpty(aValue) or VarIsNull(aValue) then
Другие вопросы по тегам