type
  TMyObject = class
    rX1, rX2, rX3, rX4: Integer;
  end;procedure TForm1.Button2Click(Sender: TObject);
var
  vMyObject: TMyObject;
begin
  vMyObject := TMyObject(ListBox1.Items.Objects[0]);
  if Assigned(vMyObject) then
    ShowMessage(Format('X3: %d, X4: %d', [vMyObject.rX3, vMyObject.rX4]));
end;procedure TForm1.FormCreate(Sender: TObject);
var
  vMyObject: TMyObject;
begin
  vMyObject := TMyObject.Create;
  vMyObject.rX1 := 1;
  vMyObject.rX2 := 2;
  vMyObject.rX3 := 3;
  vMyObject.rX4 := 4;
  ListBox1.Clear;
  ListBox1.Items.AddObject('One', vMyObject);
end;procedure TForm1.FormDestroy(Sender: TObject);
var
  vMyObject: TMyObject;
  I: Integer;
begin
  for I := 0 to ListBox1.Items.Count - 1 do begin
    vMyObject := TMyObject(ListBox1.Items.Objects[I]);
    if Assigned(vMyObject) then
      vMyObject.Free;
  end;
end;end.