Ich weiß nich, ob man mir helfen kann, aber ich bin zu blöd die Gesamtanzahl meiner Elemente zu zählen. Ich habe eine Komponente die zwei Schnittstellen nach außen hat, die diese dann mit Leben füllen sollen, um später zu zeichnen. Damit die Gesamtfunktionalität gegeben ist, brauche ich aber unter anderem eine Funktion die die Gesamtanzahl meiner Elemente angibt.
Also die Daten müssen so angeordnet sein, dass die ID´s einfach durchnumeriert werden...
Die Schnittstellen sehen folgendermaßen aus:
Delphi-Quellcode:
function DoGetChildData(AParentID: Integer; AIndex: Integer; var ChildValue: Integer; var Value: Integer; var
Caption: WideString): Integer;
function DoGetChildCount(AParentID: Integer): Integer;
Ich weiß nicht, ob die erste überhaupt interessant ist in diesem Kontext? Naja, auf jeden Fall liefert diese zu gegebener ParentID und dem Index, also welches Kind des Parent man haben möchte, z.B. das zweite, die ChildID.
Die zweite Schnittstelle liefert mir dann immer die direkte Anzahl an Kindern.
Die Funktion zum Zählen der Elemente hab ich mir ungefähr so vorgestellt, wobei die so nich richtig funktioniert, weil der Aufruf
CountTotalNumberofElements(ParentID + i) ja nich richtig ist. Das funktioniert ja nur für ParentID = 0, das dann die zum Beispiel 5 Kinder mit i aufgerufen werden. Wenn ich jetzt aber die Kinder von 1 aufrufen möchte, müsste der ja bei 6 anfangen, und genau das ist mein Problem! Wie mache ich das?
Delphi-Quellcode:
function TTreemapChart.CountTotalNumberOfElements(ParentID: Integer): Integer;
var
i : Integer;
Helper : Integer;
begin
Helper := DoGetChildCount(ParentID);
for i := 1 to Helper do
begin
Result := Result + Helper + CountTotalNumberofElements(ParentID + i);
end;
end;