Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wie Property als Array ansprechen? (https://www.delphipraxis.net/46527-wie-property-als-array-ansprechen.html)

Orbmu2k 26. Mai 2005 15:15


Wie Property als Array ansprechen?
 
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.

Delphi-Quellcode:
StringList[i] := 'Hallo';
das ich dann
Delphi-Quellcode:
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;

jfheins 26. Mai 2005 15:17

Re: Wie Property als Array ansprechen?
 
Delphi-Referenz durchsuchendefault :arrow: Array-Eigenschften ;)

Orbmu2k 26. Mai 2005 15:27

Re: Wie Property als Array ansprechen?
 
Ok Super Danke ... wissen heisst wissen wos steht :)

Delphi-Quellcode:

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(Index: Integer; Value:TTASparePart);
    procedure  Delete(Index:Integer);
    property Items[Index: Integer]: TTASparePart read GetItem Write SetItem; default;
  published
    property Count:Integer read GetCount;

end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz