Thema: Delphi Eigenen Typ in Klasse

Einzelnen Beitrag anzeigen

Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#14

Re: Eigenen Typ in Klasse

  Alt 22. Jul 2006, 11:25
Hallo zer00,

wenn du statt einer TList eine Delphi-Referenz durchsuchenTObjectList aus der Unit Contnrs verwendest, übernimmt diese die Freigabe der enthaltenen Elemente. Vielleicht wäre es noch besser, in der Unit 'Termin' eine abgeleitete Klasse zu definieren:

Delphi-Quellcode:
// uses Contnrs;

type
  TTerminListe = class (TObjectList)
  private
    function GetTermin (aIndex: Integer): TTermin;
  public
    function NeuerTermin (const aName, aNr: string): TTermin;
    property Termin [aIndex: Integer]: TTermin
      read GetTermin; Default;
  end;

function TTerminListe.GetTermin (aIndex: Integer): TTermin;
begin
  Result := TTermin(Items[aIndex]);
end;

function TTerminListe.NeuerTermin (const aName, aNr: string): TTermin;
begin
  Result := TTermin.Create(aName, aNr);
  Add(Result);
end;
Wenn du dieser Klasse weitere Methoden spendierst (z.B. LoescheTermin), dann kannst du die gesamte Verwaltung der Termine dort kapseln.
Die Verwendung in deinem Programm könnte etwas so aussehen:

Delphi-Quellcode:
var Liste : TTerminListe;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Edit1.Text := Liste[index].Name;
  Edit2.Text := Liste[index].nr;
end;
Noch eine Bemerkung zu den Prozeduren 'Button4Click' und 'Button5Click': du weißt hoffentlich, daß immer nur eine Anweisung von einem IF abhängt. Wenn alle drei Anweisungen nur im True-Fall ausgeführt werden sollen, dann mußt du sie mit BEGIN..END klammern:

Delphi-Quellcode:
if(index > 0) then
begin
  dec(index);
  Label2.Caption:= IntToStr(index);
  Self.Button2.Click;
end;
Du solltest den Controls auf deinem Formular übrigens aussagekräftigere Namen geben, dann muß man nicht raten, was die einzelnen Routinen bewirken.

Gruß Hawkeye
  Mit Zitat antworten Zitat