• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Chip Studio

            常用鏈接

            統(tǒng)計

            最新評論

            TreeView使用筆記

            TreeView使用筆記

            TreeView由節(jié)點構(gòu)成,建樹通過對TreeView.items屬性進行操作。Items是一個TTreeNodes對象,這是一個TTreeNode集。

            一、針對TTreeNodes,也就是 TreeView.Items,有這些屬性:
            1、count,節(jié)點個數(shù)。
            2、item[index] ,通過index得到節(jié)點。

            二、針對TTreeNodes,也就是 TreeView.Items,常用的添加節(jié)點的操作有:
            AddFirst添加第一個根節(jié)點。由此函數(shù)添加的節(jié)點總排在前面,除非后來又使用此函數(shù)添加了一個節(jié)點,則后添加的節(jié)點將排在前面。該函數(shù)返回新添加的節(jié)點。
            AddChildFirst添加第一個子節(jié)點,要求有父節(jié)點作為其參數(shù)。返回新添加的節(jié)點。
            AddChild添加一個子節(jié)點,要求有父節(jié)點作為其參數(shù)。返回新添加的節(jié)點。
            Add添加一個兄弟節(jié)點,要求有兄弟節(jié)點作為其參數(shù)。返回新添加的節(jié)點。

            三、針對TTreeNodes,也就是 TreeView.Items,常用的得到節(jié)點的操作有:
            GetFirstNode() 得到根節(jié)點。
            然后配合TTreeNode.GetNext(),就可以訪問所有的節(jié)點。

            四、建樹舉例:

            var
            root_node,cur_node:TTreeNode;
            begin
            root_node:=AddFirst(nil,'根節(jié)點1');
            cur_node:=addChildfirst(root_node,nil,'根節(jié)點1_child1');
            add(cur_node,'根節(jié)點1_child2');
            root_node:=Add(nil,'根節(jié)點2');
            AddChildFirst(root_node,''根節(jié)點2_child1');
            end;

            五、事件觸發(fā):
            當(dāng)從一個節(jié)點跳到另一個節(jié)點,會觸發(fā)TTreeView.OnChange事件。該事件中,將傳遞node,即當(dāng)前被選中的節(jié)點。

            當(dāng)修改一個節(jié)點的text時,會觸發(fā)TTreeView.onEdit事件。


            六、將節(jié)點和節(jié)點所對應(yīng)的數(shù)據(jù)聯(lián)系起來
            對于每個TTreeNode,有個Data屬性,可以存放一個指針。我們可以利用這個域來存放與節(jié)點對應(yīng)的自己的數(shù)據(jù)。
            1.我們先定義一個數(shù)據(jù)結(jié)構(gòu),作為記錄我們要記錄的數(shù)據(jù)。如:
            type
            PMyData=^TMyData;
            TMyData=Record
            sFName:string;
            sLName:String;
            nIndex:integer;
            end;

            2.然后,創(chuàng)建數(shù)時,將節(jié)點和節(jié)點數(shù)據(jù)聯(lián)系起來:
            procedure TForm1.Button1Click(Sender: TObject);
            var
            myshuju: PMyData
            cur_node:TTreeNode;
            begin
            New(MyRecPtr); //記住,一定要先分配內(nèi)存。有幾個節(jié)點,就要分配幾次內(nèi)存。
            myshuju^.FName:=Edit1.Text;
            Myshuju^.LName := Edit2.Text;
            TreeViewIndex := StrToInt(Edit3.Text);
            with TreeView1 do
            begin
            cur_node:=items.AddFirst(nil,'first');
            cur_node.data:=myshuju;
            end;
            end;

            3.當(dāng)我們選中一個節(jié)點時,就可以使用我們的數(shù)據(jù)了。
            procedure TForm1.TreeView1Change(Sender:TObject;Node:TTreeNode);
            begin
            if node.data<>nil then
            self.label1.caption:=pmyData(node.data)^.Fname+pmyData(node.data)^.Lname
            end;


            七、一般使用流程:
            1、添加全局變量:
            b_first:boolean; //記錄是否是第一次訪問節(jié)點,因為此時數(shù)據(jù)還未準(zhǔn)備好,而一旦訪問節(jié)點就會觸發(fā)OnChange事件,在此事件處理函數(shù)中也許會出錯。
            2、在FormCreate中,
            a、設(shè)置b_first:=true;
            b. 創(chuàng)建數(shù)并將節(jié)點與數(shù)據(jù)聯(lián)系。
            3、在FormShow中
            設(shè)置b_first:=false;
            4.在事件OnChange中處理節(jié)點被選中事件。
            5.在Edit中處理節(jié)點被修改Text事件。
            并調(diào)用OnChange.
            6.在 TreeView.Destory中
            釋放Data 中指向的內(nèi)存空間。


            posted on 2008-02-14 13:23 MyChip 閱讀(218) 評論(0)  編輯 收藏 引用

            久久国产精品77777| 久久天天日天天操综合伊人av| 亚洲日本久久久午夜精品| 亚洲精品无码久久久| 久久伊人精品一区二区三区| 精品国产一区二区三区久久久狼 | 亚洲成av人片不卡无码久久| 久久久久久精品久久久久| 国产精品视频久久久| 亚洲国产香蕉人人爽成AV片久久 | 99久久婷婷国产综合亚洲| 精品国产青草久久久久福利 | 久久久精品日本一区二区三区| 亚洲精品无码久久久久sm| A级毛片无码久久精品免费| 久久丫忘忧草产品| 久久国产成人午夜AV影院| 久久国产亚洲精品无码| 久久久久久免费视频| 人人狠狠综合久久亚洲88| 欧美精品乱码99久久蜜桃| 国产L精品国产亚洲区久久| 欧美丰满熟妇BBB久久久| 中文精品99久久国产| 久久久久久极精品久久久| 久久国产成人精品麻豆| 久久ww精品w免费人成| 久久偷看各类wc女厕嘘嘘| 久久久久av无码免费网| 性做久久久久久久久浪潮| 午夜精品久久久久久影视777| 99热精品久久只有精品| 99久久精品无码一区二区毛片| avtt天堂网久久精品| 国产精品99久久久久久人| 精品一区二区久久久久久久网站| 久久久精品国产sm调教网站 | 国产精品免费久久久久久久久| 国产精品一区二区久久| 亚洲一区二区三区日本久久九| 日本精品久久久久中文字幕|