/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Treeview spørgsmål. Simpelt... tror jeg.
Fra : Mads M.


Dato : 02-01-02 14:00

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

 
 
Casper A. Hansen (07-01-2002)
Kommentar
Fra : Casper A. Hansen


Dato : 07-01-02 10:05

Mads M. <waup@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

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste