TListItem.Tag := PtrInt(@Interface); // cast and store don't remember it might be .data

@Interface := pointer(PtrInt(TListItem.Tag)); // and away you go

Don't remember if that works in Delphi, but its a treat in Lazarus.