-4

我有以下代码

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 变成 Null 值的时候,但据我所知,在这种情况下 VarToStr 应该返回 ''

4

1 回答 1

6

可能aValue不是NULL但是。empty尝试使用检查

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

反而。或者

if VarIsEmpty(aValue) or VarIsNull(aValue) then
于 2013-02-19T12:44:52.780 回答