Verstehe, es geht um die Zuweisung. Das habe ich im Anfangsbeispiel nicht gesehen.
Ein Interimsrecord tut's auch.
Delphi-Quellcode:
function TTemplateApp.GetWidth: Integer;
var
LoColumn : TCustomColumn;
LoDataItem: TGenericItem;
LrData : TDataItem;
begin
Result := 0;
LoColumn := TCustomColumn.Create(nil);
LoDataItem := TGenericItem.Create;
try // Speicherschutz
LoColumn.Item := LoDataItem;
LrData := LoDataItem.Data;
LrData.Int32data := 42;
LoDataItem.Data := LrData;
Result := LoColumn.Item.Data.Int32data;
finally // aufräumen
FreeAndNil(LoDataItem);
FreeAndNil(LoColumn);
end;
end;