Почему это неправильно
У меня есть следующий код
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