• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    遞歸過程在VB中的應用實例

    發布: 2007-7-14 20:28 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 14次 | 進入軟件測試論壇討論

    領測軟件測試網 作者: 鄧世學

    來源:www.ccw.com.cn

    Windows的資源管理器具有界面直觀、 操作簡便的特點,深受廣大電腦愛好者的歡迎和喜愛。
    利用VB提供的TreeView控件完全可以把磁盤上的目錄(包括子目錄)放入Node對象中,其界面具有資源管理器的特點。把磁盤上的目錄放入Node對象有多種方法,應該說采用遞歸方法是比較簡潔的。
    遞歸過程實現的思路:  
    簡言之,遞歸過程就是子程序自己調用自己。由于磁盤上的目錄是樹形結構,而樹形的節點和節點級數是不受限定的,僅把目錄名放入一維或多維數組中難度較大,不易實現。編一子程序,給定目錄,并建立當前節點,加入Node對象中,根據Dir1控件判斷給定目錄下是否有下級目錄,如有,添加下級節點,并加入Node對象中如無則退出子程序。即子程序的功能是:如給定目錄有子目錄,則展開當前目錄求子目錄。如果在給定目錄展開完成后,把下級目錄當成給定目錄,并調用子程序進行展開,即可把給定目錄下的數級子目錄全部展開完畢。下面就舉例說明,為簡便起見,TreeView控件只放入目錄,文件名省略。
    實現的過程:
    1、 添加TreeView控件到窗體中:單擊—“工程”—“部件”,選擇Microsoft Windows Common Control 6.0”(文件路徑為\WinNT\System32\Mscomctl.ocx)復選框,單擊—“確定“按鈕,TreeView控件即可出現在工具箱中并添加。
    2、 在窗體中添加Drive、DirListBox、ImageList控件。
    3、 控件名及主要屬性如下:

    控件及窗體名       主要屬性值                                      備注
    ===============================================================================
    Form              Name=Form1:Caption=”測試窗體”

    TreeView          Name=TreeView1

    Drive             Name=Drive1:Visible=False                     獲得當前電腦磁盤的盤符

    DirListBox        Name=Dir1:Visible=False

    ImageList         Name=ImageList1                              給TreeView1的Node對象圖標


    在應用程序當前目錄下,放入一16X16的位圖文件123.bmp,供TreeView1控件顯示用。
    實現的源程序如下:
    Option Explicit '必須進行變量聲明
    Dim nodx As Node
    Private Sub Form_Load()
    On Error Resume Next
    '控件與窗體一樣大
    TreeView1.Height = Form1.ScaleHeight
    TreeView1.Width = Form1.ScaleWidth
    '在 ImageList 控件中添加一個圖象,該圖像用于顯示在TreeView1控件上。
    Dim imgX As ListImage
    '調入圖形文件
    Set imgX = ImageList1.ListImages.Add(, , LoadPicture("123.bmp"))
    TreeView1.ImageList = ImageList1 '初始化ImageList。
    TreeView1.LineStyle = tvwRootLines
    TreeView1.Style = tvwTreelinesPlusMinusPictureText
    Dim DriverCount As Integer
    Dim GivePath As String
    '創建根節點
    Set nodx = TreeView1.Nodes.Add(, , "本人電腦", "本人電腦", 1)
    For DriverCount = 0 To Drive1.ListCount - 1
    GivePath = Left(Drive1.List(DriverCount), 2) + "\"
    Set nodx = TreeView1.Nodes.Add("本人電腦", tvwChild, GivePath, GivePath, 1)
    SSplitNode GivePath '把各盤的文件夾進行展開放于TreeView1控件中
    Next DriverCount
    End Sub
    Sub SSplitNode(sGivePath As String) '子過程
    '把給定目錄下的子目錄全部加入Node對象中
    Dim SDI As Integer
    Dim SDCount As Integer
    '用于存放給定目錄的下級子目錄,該變量數組隨遞歸過程調用而發生變化
    Dim GivePathSubDir() As String
    '如有則展開目錄并放入TreeView1控件中
    Dir1.Path = sGivePath
    SDCount = Dir1.ListCount
    If SDCount <> 0 Then
    ReDim GivePathSubDir(SDCount - 1)
    '把下級目錄放入變量數組GivePathSubDir中
    SubSaveSubDir sGivePath, GivePathSubDir, SDCount
    End If
    If SDCount = 0 Then Exit Sub
    '即為遞歸出口。否則會形成死循環。
    For SDI = 0 To SDCount - 1
    Set nodx = TreeView1.Nodes.Add(sGivePath, tvwChild, _
    GivePathSubDir(SDI), FOnlyPath(GivePathSubDir(SDI)), 1)
    Next SDI
    '調用遞歸(子程序自己調用自己)
    For SDI = 0 To SDCount - 1
    sGivePath = GivePathSubDir(SDI)
    SSplitNode sGivePath
    Next SDI
    End Sub
    Sub SubSaveSubDir(fGivePath As String, fGivePathSubDir() As String, fSDCount As Integer)
    'fGivePath 給定目錄串
    'fGivePathSubDir 用于存放子目錄
    'fSDCount 子目錄數
    Dim i As Integer: Dim t As Integer
    Dir1.Path = fGivePath
    t = Dir1.ListCount
    For i = 0 To t - 1
    fGivePathSubDir(i) = Dir1.List(i)
    Next i
    fSDCount = t
    End Sub
    Function FOnlyPath(DString As String) As String
    '功能是去掉上級目錄,只留下當前目錄名
    'DString為給定的全路徑目錄名
    If DString = "" Then Exit Function
    Dim DLength As Integer
    DLength = Len(DString)
    Dim DD As Integer
    For DD = DLength To 1 Step -1
    If Mid(DString, DD, 1) = "\" Then Exit For
    Next DD
    FOnlyPath = Mid(DString, DD + 1)
    End Function
    Private Sub Form_Resize()
    '控件與窗體一樣大
    TreeView1.Height = Form1.ScaleHeight
    TreeView1.Width = Form1.ScaleWidth
    End Sub
    本程序在Win2000,VB6.0中文版下通過。

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>