リスト自作するときは要素を共有体にしておくと楽だよ。

TMyValueType = (
  mvtInteger,
  mvtDouble,
  mvtBoolean,
  mvtPointer,
  mvtObject,
  mvtString
);

TMyItem = record
 :
 StringValue: String;
 case ValueType: TMyValueType of
  mvtInteger: (IntegerValue: Integer);
  mvtDouble: (DoubleValue: Double);
  mvtBoolean: (BooleanValue: Boolean);
  mvtPointer: (PointerValue: Pointer);
  mvtObject: (ObjectValue: TObject);
  mvtString: ();
end;

ValueType は型を意識したいときに使うけど、無くても可。