Delphi - AddObjekt von TItems benutzen

 // Data record
type
  TPerson = record
    Name: string[255];
    Vorname: string[255]
  end;
  // Pointer to data record
  PPerson = ^TPerson;

procedure TForm1.btnAddClick(Sender: TObject);
var
  Person: PPerson;
begin
  // Alloc memory
  new(person);
  Person^.Name := edtName.Text;
  Person^.Vorname := edtVorname.Text;
  // Add item and object
  Listbox1.Items.AddObject(IntToStr(Listbox1.Items.Count + 1), TObject(Person));
  // DO NOT dispose memory. Only a reference to a pointer object is storded with
  // the listbox item
end;

procedure TForm1.ListBox1Click(Sender: TObject);
var
  Name, Vorname: string;
begin
  if Listbox1.ItemIndex > -1 then
  begin
    // Caste TObject and access the fields of the record
    Name := PPerson(Listbox1.Items.Objects[Listbox1.ItemIndex])^.Name;
    Vorname := PPerson(Listbox1.Items.Objects[Listbox1.ItemIndex])^.Vorname;
    ShowMessage(name + ', ' + Vorname);
  end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
var
  Loop: Integer;
begin
  // Dispose memory
  if Listbox1.Items.Count > 0 then
    for Loop := Listbox1.Items.Count - 1 downto 0 do
      Dispose(PPerson(Listbox1.Items.Objects[Loop]));
end;

 

2012-01-26T23:14:43 +0100, mail[at]michael[Bindestrich]puff.de