seit einigen tagen habe ich ein nerfiges Problem wo ich einfach nicht weiter kommen.
Ich habe eine Baum Strucktur und jetzt versuche ich das Längste Wort in diesem Baum zu berechnen + Ebene also auf welcher Ebene dieses Wort ist.
Das brauche ich, später sollen nach spalten hinzu kommen. Doch leider klappt das nicht.
Weil je höher ich in eine ebne rein gehe das so ungenauer wird der wert.
Ich vermute es liegt an der Rekusin selber. Ich poste mal meinen Code in der Hoffnung das mir jemand von euch sagt, das ich falsch gemacht habe:
Code: Alles auswählen
function TPlutoTV.GetHighHederItems(const aBaum:TBaum; var za:Integer; const aSpalte:Integer = -1; const aW:Integer = -1):Integer;
var
i,pw,z,x,l,tx,m:Integer;
begin
pw:=0; z:=-1;
if za = 1 then
tx:=20
else
tx:=za*10;
za:=za+1;
for i:=0 to High(aBaum.items) do begin
if (aSpalte = 0) and (aBaum.items[i].Caption <> '') then begin
pw:=buffer.Canvas.TextWidth(aBaum.items[i].Caption)+tx;
if pw > z then z:=pw;
if (abaum.items[i].items <> NIL) and (abaum.items[i].Open) then begin
l:=GetHighHederItems(abaum.items[i].items,za,aSpalte,tx+10);
if l > z then z:=l;
end
end;
end;
result:=z;
end;
Die erste ebene ist bei fängt bei 20 an, die zweite bei 30 die dritte bei 40 und soweiter.
das Seltsamme ist nur beim zeichnen klappt das genau auf dieser art und weise. nur hier nicht. ich weiß einfach nicht mehr weiter *schniff*.
Vielen Dank, für Hinweise. Mit Rekusionen hatte ich bisher immer Probleme.
Aber ohne sie kann man das doch gar nicht lösen oder doch ?