zum Beispiel so:
Delphi-Quellcode:
type
TDPTreeItems = class(TObject)
private
fChilds : TList;
fNodeName: String;
function GetItem(AIndex: Integer): TDPTreeItems;
public
constructor Create();
destructor Destroy(); override;
function Add(): Integer;
function Count(): Integer;
procedure Clear();
procedure Delete(AIndex: Integer);
property Childs[AIndex: Integer]: TDPTreeItems read GetItem;
property NodeName: String read fNodeName write fNodeName;
end;
[...]
function TDPTreeItems.Add: Integer;
var
lItem : TDPTreeItems;
begin
lItem := TDPTreeItems.Create();
result := fChilds.Add(lItem);
end;
procedure TDPTreeItems.Clear;
var
lCount : Integer;
begin
for lCount := Count - 1 downto 0 do
TObject(Childs[lCount]).Free;
fChilds.Clear;
end;
function TDPTreeItems.Count: Integer;
begin
result := fChilds.Count;
end;
constructor TDPTreeItems.Create;
begin
inherited Create;
fChilds := TList.Create;
end;
procedure TDPTreeItems.Delete(AIndex: Integer);
begin
Childs[AIndex].Free;
fChilds.Delete(AIndex);
end;
destructor TDPTreeItems.Destroy;
begin
Clear();
fChilds.Free;
inherited Destroy;
end;
function TDPTreeItems.GetItem(AIndex: Integer): TDPTreeItems;
begin
result := TDPTreeItems(fChilds.Items[AIndex]);
end;
Eine Insert-Methode etc. hinzuzufügen dürfte nicht das Problem sein.
Vorteil: Wenn du zum setzen von "NodeName" eine SetMethode hinterlegst kannst du noch sicherstellen das es kein anderes Node mit gleichem Namen gibt etc.