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;