Einzelnen Beitrag anzeigen

Benutzerbild von Orbmu2k
Orbmu2k

Registriert seit: 29. Nov 2004
Ort: Erfurt
254 Beiträge
 
Turbo Delphi für Win32
 
#1

Wie Property als Array ansprechen?

  Alt 26. Mai 2005, 15:15
Hallo,

Wie muss ich eine Listen Property deklarieren das sie die Standard Eingenschafft der Klasse ist und wie spreche ich diese dann wie ein Array an ?

also wie bei TStrings z.B.

StringList[i] := 'Hallo'; das ich dann
SpareParts[i].Id := 'AK1' machen kann



hier meine Klasse

Delphi-Quellcode:
type
  TTASparePart = record
     Id,Description:String;
     Quantity:Integer;
end;


type
  TTASpareParts = class
  private
    FList:TList;
    function GetCount:Integer;
  public
    constructor Create;
    destructor Destroy;
    procedure Clear;
    procedure Add(Item: TTASparePart);
    function GetItem(Index:Integer):TTASparePart;
    procedure SetItem(Item:TTASparePart; Index:Integer);
    procedure Delete(Index:Integer);
  published
    property Count:Integer read GetCount;

end;


...

{ TTASpareParts }

constructor TTASpareParts.Create;
begin
   FList := TList.Create;
end;

procedure TTASpareParts.Add(Item: TTASparePart);
var
  PItem:^TTASparePart;
begin
  New(PItem);
  PItem^ := Item;
  FList.Add(PItem);
end;

function TTASpareParts.GetItem(Index: Integer): TTASparePart;
begin
  Result := TTASparePart(FList[Index]^);
end;

procedure TTASpareParts.SetItem(Item: TTASparePart; Index: Integer);
var
  PItem:^TTASparePart;
begin
  Dispose(FList[Index]);
  New(PItem);
  PItem^ := Item;
  FList[Index] := PItem;
end;

procedure TTASpareParts.Delete(Index: Integer);
begin
  Dispose(FList[Index]);
  FList.Delete(Index);
end;

procedure TTASpareParts.Clear;
var
  i:Integer;
begin
  for i := 0 to Count-1 do
    Dispose(FList[i]);
  FList.Clear;
end;

destructor TTASpareParts.Destroy;
begin
  Clear;
  FList.Free;
end;

function TTASpareParts.GetCount: Integer;
begin
  Result := Flist.Count;
end;
  Mit Zitat antworten Zitat