-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ないかもしれませんNULLempty。チェックのようなものを使用してみてください

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

代わりは。または

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