2.1.26.54 tree_move_node


Description

Move seleted row to the position.

Syntax

bool tree_move_node( TreeNode & tr, int nRow, int nPosition = -1, DWORD dwCntrl = 0, LPCSTR lpcszAttribute = NULL )

Parameters

tr
[modify] source tree,
nRow
[Input] the seleted row treenode will move.
nPosition
[Input] the position of the seleted row will move.
dwCntrl
[Input]rule for getting tree node, See TREENODEAddGetRules
lpcszAttribute
[Input]work with dwCntrl, See TREENODEAddGetRules

Return

success return true, else false;

Examples

EX1

int tree_move_node_ex1()
{
    Tree    myTree;
    TreeNode    tn1,tn2,tn3;
    tn1 = myTree.AddNumericNode(123,"node1", 1);
    tn2 = myTree.AddTextNode("abc","node2", 2);
    tn3 = myTree.AddNumericNode(345,"node3", 3);
    
    myTree.node4.First.strVal = "dd";
    myTree.node4.Second.strVal = "a";
    myTree.node4.Third.strVal = "b";
    myTree.node4.Fourth.strVal = "c";
    myTree.node4.Fith.strVal = "d";
    myTree.node4.Third.DataID = 3;
    // Source Tree as following:
        //|--node1 = 123
        //|--node2 = abc
        //|--node3 = 345
        //|--node4
        //|----First = dd
        //|----Second = a
        //|----Third = b
        //|----Fourth = c
        //|----Fith = d

    //out_tree(myTree);
    //Normal case.
    bool bRet = tree_move_node(myTree, 6,2);
        //|--node1 = 123
        //|--node2 = abc
        //|--Third = b
        //|--node3 = 345
        //|--node4
        //|----First = dd
        //|----Second = a
        //|----Fourth = c
        //|----Fith = d

    ASSERT(bRet);
    ASSERT(strcmp(myTree.Third.strVal, tree_get_node(myTree, 2).strVal) == 0);
    //out_tree(myTree);
    //Add begin
    bRet = tree_move_node(myTree, 2,0);
        //|--Third = b
        //|--node1 = 123
        //|--node2 = abc
        //|--node3 = 345
        //|--node4
        //|----First = dd
        //|----Second = a
        //|----Fourth = c
        //|----Fith = d

    ASSERT(bRet);
    ASSERT(strcmp(myTree.Third.strVal, myTree.FirstNode.strVal) == 0 );
    //out_tree(myTree);
    //Add at the end
    bRet = tree_move_node(myTree, 3,-1);
        //|--Third = b
        //|--node1 = 123
        //|--node2 = abc
        //|--node4
        //|----First = dd
        //|----Second = a
        //|----Fourth = c
        //|----Fith = d
        //|--node3 = 345
        
    ASSERT(bRet);
    ASSERT(myTree.node3.nVal == myTree.LastNode.nVal);
    //out_tree(myTree);
    
    //not work, return false;
    bRet = tree_move_node(myTree, 3,10);
    ASSERT(!bRet);
        ///Result
        //|--Third = b
        //|--node1 = 123
        //|--node2 = abc
        //|--node4
        //|----First = dd
        //|----Second = a
        //|----Fourth = c
        //|----Fith = d
        //|--node3 = 345
    ///Invalid case nRow <0
    bRet = tree_move_node(myTree, -1,2);
    ASSERT(!bRet);
    ///Invalid case nRow > treenode rows.
    bRet = tree_move_node(myTree, 10,5);
    ASSERT(!bRet);

    return 1;
}

Remark

See Also

tree_get_node

Header to Include

origin.h

Reference