• <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)  編輯 收藏 引用

            久久青青草原国产精品免费 | 久久综合精品国产二区无码| 久久亚洲精品成人无码网站| 综合人妻久久一区二区精品| 久久久婷婷五月亚洲97号色| 99re久久精品国产首页2020| 国产成人99久久亚洲综合精品| 国产香蕉97碰碰久久人人| 日韩欧美亚洲国产精品字幕久久久| 久久久久久亚洲精品影院| 精品国产乱码久久久久久郑州公司| 久久精品国产一区二区三区不卡 | 久久国产AVJUST麻豆| 国产精品欧美久久久天天影视| 中文精品久久久久国产网址| 久久亚洲精品国产亚洲老地址 | 久久亚洲国产成人影院网站 | 久久国产影院| 久久超碰97人人做人人爱| 性高湖久久久久久久久AAAAA| 精品久久久无码人妻中文字幕豆芽| 人人狠狠综合久久亚洲高清| 国产成人无码久久久精品一| 久久久久精品国产亚洲AV无码| 91精品国产91久久久久久蜜臀| 午夜精品久久久久久99热| 亚洲欧美国产日韩综合久久 | 国产精品久久自在自线观看| 一本一本久久a久久精品综合麻豆| 色综合久久中文色婷婷| 久久国产免费观看精品3| 久久久久久久97| 人妻无码αv中文字幕久久琪琪布| 91久久精品国产免费直播| 国产精品久久久久影视不卡| 久久久精品人妻一区二区三区蜜桃| 久久久久亚洲精品日久生情| 亚洲精品NV久久久久久久久久| 久久有码中文字幕| 伊人久久大香线蕉成人| 久久久久久久久久久精品尤物|