Information générale
Catégorie:
Contrôles ActiveX en VFP
Frank,
You do not need to perform recursive task. Just get the child-parent info into your cursor (it should be a flat table, obtained by using SQL statement), and use the following code the add the node. TreeView will take care of the heirachy for you.
WITH This.oleTree
nLeft = .Left && Property to remember the original 'left'
.left = -999 && To speed up the adding of nodes
thisform.lockscreen = .t.
oNode = .nodes.add(,,"_R0","My Top Node","TopIcon",)
SELECT tmpTree && Must have child-parent info
SCAN
*-- Look for existance of 'parents'
nNodeCount = .nodes.count
FOR i = 1 to nNodeCount
IF .nodes(i).key = parent
llNodeExist = .t.
exit
ELSE
llNodeExist = .f.
ENDIF
ENDFOR
*-- Add the parent node if it does not exist
IF !llNodeExist
oNode = .nodes.add("_R0",4,parent,tmpTree.parent,"icon","selectedicon")
ENDIF
*-- This line will do the hierichy job for you
oNode = .nodes.add(parent,4,accno,tmpAccountTree.child + space(1) + alltrim(tmpAccountTree.desp),"clsfolder","openfolder")
ENDSCAN
.left = nLeft
ENDWITH
Hope it helps,
juan
>I'm currently doing a project involving using two treeview
>controls to make a structure.
>The structure can consist of several thousands nodes.
>- What's the best way to recursively add the nodes in the tree?
> All the data for the nodes in the right three are gathered on
> startup and loaded into a VFP cursor. I've found that
> SCAN
> ...
> ENDSCAN
> doesn't work very well with recursive functions.
> The max number of levels in the tree will be about 5-6.
> Is it better to make the addnodes-function non-recursive for
> speed-improvements?
>- What's the best way to get the a branch of the tree on the left
> and add to a selected node in the tree to the right?
> I've programmed one recursively, but it performs poorly when
> the number of nodes in the branch approaches >1000 nodes.
>
>Any suggestions, algorithms, URLs or help on this matter would be highly appreciated.
Précédent
Suivant
Répondre
Voir le fil de ce thread
Voir le fil de ce thread à partir de ce message seulement
Voir tous les messages de ce thread
Voir tous les messages de ce thread à partir de ce message seulement