hi
wie muetze1 schon gesagt hat, ich würde auf den Objects array zurückgreifen
hier mal ein kleines beispiel:
du deklarierst dir ein Objekt:
Delphi-Quellcode:
type
TInfoObj = class(TObject)
private
FNachname: string;
published
property Nachname: string
read FNachname write FNachname;
end;
wenn du jetzt deine Namen eintragen willst, ginge das z.b. folgendermaßen:
Delphi-Quellcode:
procedure eingabe(Vorname,Nachname: string)
var
Eintrag: TInfoObj;
begin
Eintrag := TInfoObj.Create;
Eintrag.Nachname := Nachname;
ListBox1.Items.AddObject(Vorname,Eintrag);
end;
damit erhälst du jeweils einen Eintrag in der Listbox mit dem Vornamen und gleichzeitig wurde da noch das Objekt vom typ TInfoObj mitgespeichert, das wiederrum den Nachnamen enthält (natürlich können dann auch genauso anderen Sachen gespeichert werden)
eine schleife zum ausgeben der Vor-/Nachnamen könnte z.B. so aussehen:
Delphi-Quellcode:
procedure ausgabe;
var
Eintrag: TInfoObj;
i: integer;
begin
for i := 0 to ListBox1.Count -1 do
begin
Eintrag := ListBox1.Items.Objects[i];
showmessage('Vorname: '+ListBox1.Items.Strings[i]+' Nachname: '+Eintrag.Nachname);
end;
end;
diese prozedur liest in einer Schleife alle einträge aus und gibt jeweils den Vornamen wie gehabt aus der ListBox aus und holt sich zusätzlich noch das mit-eingetragene Objekt vom typ TInfoObj und liest die .Nachname property daraus aus. Man sollte natürlich noch als Sicherheit später noch überprüfen, ob Eintrag <> nil ist, aber es geht ja erstmal nur ums prinzip.
Ausserdem: wenn du ListBox1.Clear aufrufst werden zwar alle Einträge gelöscht und auch die Verweise auf die Objekte; diese bleiben allerdings im Speicher.
also müsste man zum leeren der Liste eher sowas hier verwenden:
Delphi-Quellcode:
procedure ClearList;
var
i: integer;
begin
for i := 0 to ListBox1.Count - 1 do
begin
TInfoObj(ListBox1.Items.Objects[i]).Free;
end;
ListBox1.Items.Clear;
end;
damit werden erst alle Objekte sauber aus dem speicher entfernt, bevor auch die Verweise darauf entfernt werden