Record ist überflüssig. Zumindest in dieser Konstellation.
Wie Jumpy bereits gesagt hat, pack deine Variablen direkt in die Klasse.
Delphi-Quellcode:
Type
TTelEintrag=class
private
FName: string;
FTelNummer: string;
Procedure SetName(value: string);
Procedure SetTelNummer(value: string);
published
property Name: string read FName write SetName;
property TelNummer: string read FTelNummer write SetTelNummer;
end;
TTelBuch=class(TObjectList<TTelEintrag>);
Lesen und Schreiben der Daten kannst du recht einfach über TelBuch[Index].Name oder TelBuch[index].TelNummer.
Wenn du eine Liste hast, dann wirst du in den meisten Fällen diese Liste irgendwie abbilden. Im simpelsten Fall in einer Listbox.
Laden könntest du die vielleicht so:
Delphi-Quellcode:
Listbox.clear;
for i:=0 to TelBuch.Count-1 do
ListBox.Items.Add(TelBuch[i].Name);
Wenn du jetzt einen Eintrag der ListBox selektierst könnte du auf die Daten ungefär so zugreifen:
TelBuch[ListBox.ItemIndex].Name
(oder .TelNummer)
Du kannst diese Daten halt in ein Control laden z.B.
edit1.Text:=TElBuch[ListBox.ItemIndex].Name
nach der Änderung z.B: über
TelBuch[ListBox.ItemIndex].Name:=edit1.Text;
.
Einfach mal ein bisschen mit rumspielen.
Du kannst natürlich in dem Object auch anderen Objecte als properties verwenden z.B. eine TStringList oder TNummernList (eine weitere TObjectList, die du natürlich vorher deklariert haben solltest), usw.
Dann solltest du den Constructor Create und den Destructor Destoy mit in deine Klasse aufnehmen und dort entsprechen diese Objecte erzeugen bzw. Freigeben.
Delphi-Quellcode:
.
.
.
public
constructor Create;
destructor Destroy; override;
.
.
.
implementation
constructor TTelEintrag.Create;
begin
inherited;
FNummernList:=TNummernList.Create;
end;
destructor TTelEintrag.Destroy;
begin
FNummernList.free;
inherited;
end;
Wichtig ist im Interface-Abschnitt beim Destroy nicht das override zu vergessen.