Hallo,
ich verstehe grob was du meinst, bekomme es aber nicht hin.
Hier mal was ich so habe:
Delphi-Quellcode:
TProductTreeItemList = class;
TProductTreeItemListEnumerator = class(TObject)
strict private
FIndex : Integer;
FList : TProductTreeItemList;
public
constructor Create(AList: TProductTreeItemList);
function GetCurrent: TObject; inline;
function GetCurrentT: TProductTreeItem;
function MoveNext: Boolean; inline;
property Current: TProductTreeItem
read GetCurrentT;
end;
TProductTreeItemList = class(TObjectList<TProductTreeItem>)
strict private
[..]
function GetEnumerator: TProductTreeItemListEnumerator;
public
[..]
function GetLastGroupProductIndex(GroupID: Integer): TGroupProductIndexRec;
end;
function TProductTreeItemList.GetEnumerator: TProductTreeItemListEnumerator;
begin
Result := TProductTreeItemListEnumerator.Create(self);
end;
function TProductTreeItemList.GetLastGroupProductIndex(GroupID: Integer): TGroupProductIndexRec;
var
NewGroupFound : Boolean;
begin
NewGroupFound := false;
Result.GroupIndex := 0;
Result.NextProductIndex := 0;
// Hier meckert der COmpiler:
// [dcc32 Fehler] ProductManagerTreeDisplay.pas(139): E2431 for-in-Anweisung arbeitet nicht mit Kollektionstyp
// 'System.IEnumerator<ProductTreeItem.TProductTreeItem>', weil 'System.IEnumerator<ProductTreeItem.TProductTreeItem>'
// kein Element für 'GetEnumerator' enthält oder darauf nicht zugegriffen werden kann
for var GItem in self do
begin
if (GItem.NodeType = ntGroup) then
begin
end;
end;
end;