Во время деструктора вызов приходит в EndLayout и вызывается Rebuild структуры. А RowCategories уже nil. Для воспроизведения создать грид с категориями и потом разрушить форму с ним.
Исправление.
Код:
function TCustomDBVertGridEh.RawToDataRow(ARow: Integer): Integer;
var
ANode: TDBVertGridCategoryTreeNodeEh;
begin
{SAMO}
if (RowCategories <> nil) and RowCategories.Active then
begin
ANode := RowCategories.CurrentCategoryTree.FlatItem[ARow];
if (ANode <> nil) and
(ANode.RowType = vgctFieldRowEh) and
(ANode.FieldRow <> nil)
then
Result := ANode.FieldRow.Index
else
Result := -1;
end else
Result := ARow;
end;