Mads M. <wa
up@punkass.com> wrote in message news:<mq063uga3k6oc2kccho7rvc0v0mkgj6nhj@4ax.com>...
> Hej NG
>
> Jeg har en typisk mængde data, som kan beskrives som strenge af denne
> form:
>
> 1
> 1.1
> 1.2
> 2
> 2.1
> 2.1.1
> 2.1.2
>
> osv...
>
> Dem vil jeg gerne stoppe i et treeview. Har arbejdet med det før, så
> jeg har en ide, men jeg tror ikke det er den nemmeste. Derfor vil jeg
> høre om der er nogen der har en ide til at organisere data så de er
> til at fylde i træet. Evt. noget med at gruppere dem i lister ol..
> ...eller skal man rende træet igennem for hver indsætning, for at se
> om det er en parent til hver streng?
>
> /Mads N
Det er faktisk ikke så svært med lidt recursiv programmering.
Noget i denne retning.
(* Utestet kode, jeg fornemmer at der er et problem med nedenstående
*)
procedure Add(AString : String);
procedure Insert(ANode : TTreeNode; ANiveau : Integer; AString :
String);
var
wValue : Integer;
wNode : TTreeNode;
begin
wValue := FindNiveauValueInString(ANiveau, AString);
ANode := wNode;
while Assigned(wNode) do begin
if wValue = GetNiveauValueFromNode(wNode) then begin
if ANiveau < MaxNiveauOfString(ANiveau) then begin
Insert(wNode.GetFirstChild);
end else begin
wNode := TreeView.Items.Add(wNode);
wNode.Text := AString;
end;
end;
wNode := wNode.GetNextSibling;
end;
end;
begin
Insert(TreeView.Items.GetFirstNode, 0, AString);
end;
Bemærk at ovenstående forventer at alle tidligere niveauer allerede
findes, samt at den nye streng ikke allerede findes.
/Casper