我有以下代码
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应返回''
答案 0 :(得分:6)
aValue
可能不是NULL
而是empty
。尝试使用像
if(FindVarData(aValue)^.VType in [varNull, varEmpty])then ...
代替。或
if VarIsEmpty(aValue) or VarIsNull(aValue) then