相信很多編程愛好者都使用過(guò)網(wǎng)絡(luò)螞蟻或 FoxMail 軟件,其軟件運(yùn)行主界面的左側(cè)有一顯示等級(jí)結(jié)構(gòu)的樹狀外觀控件,不僅美觀大方,而且非常方便使用。其實(shí),在 VB 中利用 Treeview 控件很容易就能編寫出同樣效果的程序。
首先在 VB 中建立一個(gè)新工程,單擊“工程/部件”,在控件列表中選中“Microsoft Windows command controls6.0(sp4)”,按下“確定”按鈕返回主界面,在左側(cè)控件窗體中選中 Treeview 控件置于窗體上,再放置一個(gè) Imagelist 控件、兩個(gè) Label 控件、兩個(gè)Textbox 控件、六個(gè) commandbutton 控件,其屬性分別如下:
Treeview 控件:名稱 Treeview1;
Imagelist 控件:名稱 Imagelist1,并在該控件中放置三張個(gè)性圖片(32×32),建立索引1、2、3;(方法:在Imagelist 控件上單擊鼠標(biāo)右鍵選擇屬性)
Label 控件:名稱分別為L(zhǎng)ab(0)、Lab(1),Caption分別為“父節(jié)點(diǎn):”、“子節(jié)點(diǎn):”;
Textbox 控件:名稱分別為Txt(0)、Txt(1),text都為“”;
commandbutton 控件:名稱為系統(tǒng)默認(rèn),Caption分別為“添加”、“展開”、“收起”、“排序”、“刪除”、“退出”;
將下列代碼加入到代碼框:
Option Explicit
Dim I As Integer
Dim J As Integer Dim nodx As Node Dim CunZai As Boolean ''定義變量 Private Sub Command1_Click() If Txt(0).Text <> "" And Txt(1).Text <> "" Then ''不允許建立零字節(jié)的父節(jié)點(diǎn)和子節(jié)點(diǎn) CunZai = False J = TreeView1.Nodes.Count For I = 1 To TreeView1.Nodes.Count ''檢查新輸入的父節(jié)點(diǎn)名稱是否存在 If TreeView1.SelectedItem.Children > 0 Then If Txt(0).Text = TreeView1.Nodes(I).Text Then CunZai = True End If Next I If CunZai = True Then ''若存在, 則在父節(jié)點(diǎn)下建立子節(jié)點(diǎn) Set nodx = TreeView1.Nodes.Add(Txt(0).Text, tvwChild, "child" & J, Txt(1).Text, 3) Else ,若不存在,則建立父節(jié)點(diǎn)和子節(jié)點(diǎn) Set nodx = TreeView1.Nodes.Add(, , Txt(0).Text, Txt(0).Text, 1) Set nodx = TreeView1.Nodes.Add(Txt(0).Text, tvwChild, Txt(1).Text, 3) End If TreeView1.Refresh ElseIf Txt(0).Text = "" Then MsgBox "請(qǐng)輸入父節(jié)點(diǎn)名稱!", vbInformation, "警告!" ''系統(tǒng)提示 ElseIf Txt(1).Text = "" Then MsgBox "請(qǐng)輸入子節(jié)點(diǎn)名稱!", vbInformation, "警告!" End If End Sub Private Sub Command2_Click()
For I = 1 To TreeView1.Nodes.Count TreeView1.Nodes(I).Expanded = True ''展開所有節(jié)點(diǎn) Next I End Sub Private Sub Command3_Click()
For I = 1 To TreeView1.Nodes.Count TreeView1.Nodes(I).Expanded = False ''收起所有節(jié)點(diǎn) Next I End Sub Private Sub Command4_Click()
TreeView1.Sorted = True ''排列順序 End Sub Private Sub Command5_Click()
If TreeView1.SelectedItem.Index <> 1 Then TreeView1.Nodes.Remove TreeView1.SelectedItem.Index ''刪除選定的節(jié)點(diǎn),TreeView1.SelectedItem.Index 返回索引值 End If End Sub Private Sub Command6_Click()
End ''退出程序 End Sub Private Sub Form_Load()
TreeView1.LineStyle =TvwTreeLines ''在兄弟節(jié)點(diǎn)和父節(jié)點(diǎn)之間顯示線 TreeView1.ImageList = ImageList1 ''鏈接圖像列 TreeView1.Style = tvwTreelinesPlusMinusPictureText ''樹狀外觀包含全部元素 Set nodx = TreeView1.Nodes.Add(, , "蒲子明", "蒲子明", 1) ''建立名稱為"蒲子明"的父節(jié)點(diǎn),選擇索引為1的圖像 Set nodx = TreeView1.Nodes.Add("蒲子明", tvwChild, "child01", "收件箱", 3) ''在"蒲子明"父節(jié)點(diǎn)下建立"收件箱"子節(jié)點(diǎn),選擇索引為3的圖像 Set nodx = TreeView1.Nodes.Add("蒲子明", tvwChild, "child02", "發(fā)件箱", 3) ''在"蒲子明"父節(jié)點(diǎn)下建立"發(fā)件箱"子節(jié)點(diǎn),選擇索引為3的圖像 CunZai = False End Sub Private Sub TreeView1_Expand(ByVal Node As MSComctlLib.Node)
Node.ExpandedImage = 2 ''節(jié)點(diǎn)被展開時(shí),選擇索引為2的圖像 End Sub Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
If TreeView1.SelectedItem.Children = 0 Then ''檢查是否有子節(jié)點(diǎn),0為無(wú) For I = 1 To TreeView1.Nodes.Count If TreeView1.Nodes(I).Selected Then MsgBox "您選擇的是:“" & TreeView1.Nodes(I).FullPath & "”子節(jié)點(diǎn)!" ''系統(tǒng)提示 End If Next I End If End Sub |
|