find.frm
上传用户:dohkov
上传日期:2007-06-18
资源大小:35k
文件大小:17k
源码类别:

家庭/个人应用

开发平台:

Visual Basic

  1. VERSION 5.00
  2. Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
  3. Begin VB.Form Find 
  4.    BorderStyle     =   1  'Fixed Single
  5.    Caption         =   "查找"
  6.    ClientHeight    =   2340
  7.    ClientLeft      =   45
  8.    ClientTop       =   330
  9.    ClientWidth     =   4800
  10.    ControlBox      =   0   'False
  11.    Icon            =   "find.frx":0000
  12.    LinkTopic       =   "Form1"
  13.    MaxButton       =   0   'False
  14.    MinButton       =   0   'False
  15.    ScaleHeight     =   2340
  16.    ScaleWidth      =   4800
  17.    StartUpPosition =   3  '窗口缺省
  18.    Begin VB.Frame Frame1 
  19.       Caption         =   "查找范围"
  20.       Height          =   495
  21.       Left            =   120
  22.       TabIndex        =   3
  23.       Top             =   720
  24.       Width           =   3135
  25.       Begin VB.Label Label2 
  26.          BackStyle       =   0  'Transparent
  27.          Caption         =   "Label2"
  28.          ForeColor       =   &H000000FF&
  29.          Height          =   255
  30.          Left            =   120
  31.          TabIndex        =   5
  32.          Top             =   240
  33.          Width           =   2895
  34.       End
  35.    End
  36.    Begin VB.Frame Frame2 
  37.       Caption         =   "查找内容"
  38.       Height          =   615
  39.       Left            =   120
  40.       TabIndex        =   7
  41.       Top             =   1320
  42.       Width           =   3135
  43.       Begin VB.CheckBox Check2 
  44.          Caption         =   "文件"
  45.          Height          =   255
  46.          Left            =   1080
  47.          TabIndex        =   9
  48.          Top             =   240
  49.          Value           =   1  'Checked
  50.          Width           =   735
  51.       End
  52.       Begin VB.CheckBox Check1 
  53.          Caption         =   "文件夹"
  54.          Height          =   255
  55.          Left            =   120
  56.          TabIndex        =   8
  57.          Top             =   240
  58.          Value           =   1  'Checked
  59.          Width           =   855
  60.       End
  61.    End
  62.    Begin MSComctlLib.TreeView TreeView1 
  63.       Height          =   975
  64.       Left            =   3480
  65.       TabIndex        =   6
  66.       Top             =   1200
  67.       Visible         =   0   'False
  68.       Width           =   1095
  69.       _ExtentX        =   1931
  70.       _ExtentY        =   1720
  71.       _Version        =   393217
  72.       Style           =   7
  73.       Appearance      =   1
  74.    End
  75.    Begin VB.CommandButton Command2 
  76.       Cancel          =   -1  'True
  77.       Caption         =   "返回"
  78.       Height          =   375
  79.       Left            =   3480
  80.       TabIndex        =   2
  81.       Top             =   720
  82.       Width           =   1095
  83.    End
  84.    Begin VB.CommandButton Command1 
  85.       Caption         =   "确定"
  86.       Default         =   -1  'True
  87.       Height          =   375
  88.       Left            =   3480
  89.       TabIndex        =   1
  90.       Top             =   240
  91.       Width           =   1095
  92.    End
  93.    Begin VB.TextBox Text1 
  94.       Height          =   270
  95.       Left            =   120
  96.       TabIndex        =   0
  97.       Top             =   360
  98.       Width           =   3135
  99.    End
  100.    Begin VB.Label Label3 
  101.       AutoSize        =   -1  'True
  102.       Height          =   180
  103.       Left            =   120
  104.       TabIndex        =   10
  105.       Top             =   2040
  106.       Width           =   90
  107.    End
  108.    Begin VB.Label Label1 
  109.       AutoSize        =   -1  'True
  110.       Caption         =   "请输入待查找的文件夹或文件名"
  111.       Height          =   180
  112.       Left            =   120
  113.       TabIndex        =   4
  114.       Top             =   120
  115.       Width           =   2520
  116.    End
  117. End
  118. Attribute VB_Name = "Find"
  119. Attribute VB_GlobalNameSpace = False
  120. Attribute VB_Creatable = False
  121. Attribute VB_PredeclaredId = True
  122. Attribute VB_Exposed = False
  123. Private Sub Command1_Click()
  124. Dim FindString As String
  125. Dim Found As Boolean
  126. Dim FoundOne As Boolean
  127. Found = False
  128. FindString = Trim(Text1.Text)
  129. If FindString = "" Then
  130.    Text1.SetFocus
  131.    Exit Sub
  132. End If
  133. Me.Caption = "正在查找中...这需要一些时间,请稍候!"
  134. TreeView1.Nodes.Clear
  135. Me.MousePointer = 11
  136. Dim FindKey As String
  137. FindKey = "@@@@@***##查找结果@@@@@***##"
  138. If Left(MainForm.TreeView1.SelectedItem.Key, 3) = "光盘库" Then
  139.    ''''''''''''''''''''''''''''''''''''''''''''''''''''
  140.       FoundOne = False
  141.       Me.MousePointer = 11
  142.       Me.TreeView1.Nodes.Clear
  143.       ''''''''''''''''''''''''删除以前查找结果
  144.       For i = 1 To MainForm.TreeView1.Nodes.Count
  145.           If MainForm.TreeView1.Nodes(i).Key = FindKey Then
  146.              Set nox = MainForm.TreeView1.Nodes(i).Child
  147.              For ii = 1 To MainForm.TreeView1.Nodes(i).Children
  148.                 fname = nox.Text + ".fnd"
  149.                 If Dir(fname) <> "" Then
  150.                    Kill fname
  151.                 End If
  152.                 If ii < MainForm.TreeView1.Nodes(i).Children Then
  153.                    Set nox = nox.Next
  154.                 End If
  155.              Next
  156.              MainForm.TreeView1.Nodes.Remove i
  157.              Exit For
  158.            End If
  159.       Next
  160.       MainForm.TreeView1.Nodes.Add , , FindKey, "查找结果", 5
  161.    '设置查找范围
  162.       Dim CdromArray() As Node
  163.       Dim nod As Node
  164.       kk = 0
  165.    If MainForm.TreeView1.SelectedItem.Key = "光盘库" Then
  166.       For i = 2 To MainForm.TreeView1.Nodes.Count
  167.           If Left(MainForm.TreeView1.Nodes(i).Key, 3) = "子光盘" Then
  168.              ReDim Preserve CdromArray(kk) As Node
  169.              Set CdromArray(kk) = MainForm.TreeView1.Nodes(i)
  170.              kk = kk + 1
  171.           End If
  172.       Next
  173.    Else
  174.       For i = 2 To MainForm.TreeView1.Nodes.Count - 1
  175.           If MainForm.TreeView1.Nodes(i).Parent.Key = MainForm.TreeView1.SelectedItem.Key Then
  176.              ReDim Preserve CdromArray(kk) As Node
  177.              Set CdromArray(kk) = MainForm.TreeView1.Nodes(i)
  178.              kk = kk + 1
  179.           End If
  180.       Next
  181.    End If
  182.       For zz = 0 To UBound(CdromArray)
  183.       Set nod = CdromArray(zz)
  184.       CdromName = nod.Text
  185.       '''************'''从文件中读取光盘镜像
  186.       Label3.Caption = "读取光盘 " + nod.Text + " ..."
  187.       Me.Refresh
  188.       If Dir(nod.Text + ".cdo") = "" Then
  189.          MsgBox "光盘 " + Chr(34) + nod.Text + Chr(34) + " 镜像文件丢失,请重新生成!", vbCritical
  190.          Me.MousePointer = 0
  191.          Me.Caption = "查找"
  192.          Me.Label3 = "发生严重错误!请检查光盘镜像的好与坏!"
  193.          Exit Sub
  194.       End If
  195.         Dim FileNotes As String
  196.         fnum = FreeFile
  197.         Open nod.Text + ".cdo" For Input As #fnum
  198.         Line Input #fnum, FileNotes
  199.         If FileNotes <> "@@@@@***##光盘镜像文件@@@@@***##" Then
  200.          MsgBox "非法的光盘镜像文件 " + Chr(34) + nod.Text + Chr(34) + Chr(13) + Chr(13) + "请重新生成光盘镜像文件!", vbCritical
  201.          Close fnum
  202.          Me.MousePointer = 0
  203.          Me.Caption = "查找"
  204.          Me.Label3 = "发生严重错误!请检查光盘镜像文件的好坏!"
  205.          Exit Sub
  206.         Else
  207.          '''正式开始
  208.          MainForm.TreeView2.Nodes.Clear
  209.          Line Input #fnum, FileNotes
  210.          MainForm.TreeView2.Nodes.Add , , FileNotes, FileNotes, 1
  211.             Do While Not EOF(fnum)
  212.             Line Input #fnum, FileNotes
  213.             If Right(FileNotes, 1) = "" Then
  214.                fns1 = Left(FileNotes, Len(FileNotes) - 1)
  215.                For i = Len(fns1) To 1 Step -1
  216.                    If Mid(fns1, i, 1) = "" Then
  217.                       Dim FnsPath As String
  218.                       Dim FnsName As String
  219.                       FnsPath = Left(fns1, i)
  220.                       FnsName = Mid(fns1, i + 1)
  221.                       Exit For
  222.                    End If
  223.                Next
  224.                MainForm.TreeView2.Nodes.Add FnsPath, tvwChild, FileNotes, FnsName, 3, 2
  225.             Else
  226.                For i = Len(FileNotes) To 1 Step -1
  227.                    If Mid(FileNotes, i, 1) = "" Then
  228.                       FnsPath = Left(FileNotes, i)
  229.                       FnsName = Mid(FileNotes, i + 1)
  230.                       Exit For
  231.                    End If
  232.                Next
  233.                MainForm.TreeView2.Nodes.Add FnsPath, tvwChild, FileNotes, FnsName, 10
  234.             End If
  235.          Loop
  236.          Close fnum
  237.       End If
  238.       
  239.       
  240.       '''***********'''光盘镜像写入列表中
  241.       If Dir(CdromName + ".fnd") <> "" Then
  242.          Kill CdromName + ".fnd"
  243.       End If
  244.       fnum = FreeFile
  245.       roots = MainForm.TreeView2.Nodes(1).Text
  246.       Open CdromName + ".fnd" For Output As #fnum
  247.       Print #fnum, FindString
  248.       Print #fnum, roots
  249.       Close fnum
  250.        TreeView1.Nodes.Clear
  251.        TreeView1.Nodes.Add , , roots, roots
  252.        For yy = 2 To MainForm.TreeView2.Nodes.Count
  253.           Label3.Caption = MainForm.TreeView2.Nodes(yy).Key
  254.           If Check1.Value And Check2.Value Then '两样都找
  255.              If InStr(1, UCase(MainForm.TreeView2.Nodes(yy).Text), UCase(FindString)) Then
  256.                 FoundOne = True
  257.                 Found = True
  258.                 FindFord MainForm.TreeView2.Nodes(yy).Key
  259.              End If
  260.           Else
  261.              If Check1.Value Then '只找文件夹
  262.                 If Right(MainForm.TreeView2.Nodes(yy).Key, 1) = "" Then '是文件夹
  263.                    If InStr(1, UCase(MainForm.TreeView2.Nodes(yy).Text), UCase(FindString)) Then
  264.                       FoundOne = True
  265.                       Found = True
  266.                       FindFord MainForm.TreeView2.Nodes(yy).Key
  267.                    End If
  268.                 End If
  269.             Else '只找文件
  270.                 If Check2.Value Then
  271.                 If Right(MainForm.TreeView2.Nodes(yy).Key, 1) <> "" Then  '是文件夹
  272.                    If InStr(1, UCase(MainForm.TreeView2.Nodes(yy).Text), UCase(FindString)) Then
  273.                       FoundOne = True
  274.                       Found = True
  275.                       FindFord MainForm.TreeView2.Nodes(yy).Key
  276.                    End If
  277.                 End If
  278.                 End If
  279.             End If
  280.           End If
  281.       Next
  282.       If FoundOne Then
  283.          MainForm.TreeView1.Nodes.Add FindKey, tvwChild, FindKey + CdromName, CdromName, 1
  284.          FoundOne = False
  285.       End If
  286.       '''************'''
  287.       Next
  288.       Label3.Caption = ""
  289.       Me.MousePointer = 0
  290.       Me.Caption = "查找"
  291.       If Found = False Then
  292.          Me.TreeView1.Nodes.Clear
  293.          MsgBox "很遗憾,没找到待查字串 " + Chr(34) + FindString + Chr(34) + Chr(13) + Chr(13) + "你可以搜索整个光盘库或某个类别,如果你这样做了,还找不到!" + Chr(13) + "很遗憾,你没有这种光盘!", vbExclamation
  294.          sfiles = Dir("*.fnd")
  295.          Do While sfiles <> ""
  296.             Kill sfiles
  297.             sfiles = Dir
  298.          Loop
  299.          For i = 2 To MainForm.TreeView1.Nodes.Count
  300.              If MainForm.TreeView1.Nodes(i).Key = FindKey Then
  301.                 MainForm.TreeView1.Nodes.Remove i
  302.                 Exit For
  303.              End If
  304.          Next
  305.       Else
  306.          MsgBox "恭喜,找到了待查字串 " + Chr(34) + FindString + Chr(34) + Chr(13) + Chr(13) + "请单击 查找结果 查看!", vbInformation
  307.          For i = 2 To MainForm.TreeView1.Nodes.Count
  308.              If MainForm.TreeView1.Nodes(i).Key = FindKey Then
  309.                 MainForm.TreeView1.Nodes(i).Expanded = True
  310.                 Exit For
  311.              End If
  312.          Next
  313.       End If
  314.       Unload Me
  315.    ''''''''''''''''''''''''''''''''''''''''''''''''''''
  316.    Else '单盘查找
  317.        If Dir(CdromName + ".fnd") <> "" Then
  318.           Kill CdromName + ".fnd"
  319.        End If
  320.        roots = MainForm.TreeView2.Nodes(1).Text
  321.        fnum = FreeFile
  322.        Open CdromName + ".fnd" For Output As #fnum
  323.        Print #fnum, FindString
  324.        Print #fnum, roots
  325.        Close fnum
  326.        TreeView1.Nodes.Add , , roots, roots
  327.        For i = 2 To MainForm.TreeView2.Nodes.Count
  328.           Label3.Caption = MainForm.TreeView2.Nodes(i).Key
  329.           If Check1.Value And Check2.Value Then '两样都找
  330.              If InStr(1, UCase(MainForm.TreeView2.Nodes(i).Text), UCase(FindString)) Then
  331.                 Found = True
  332.                 FindFord MainForm.TreeView2.Nodes(i).Key
  333.              End If
  334.           Else
  335.              If Check1.Value Then '只找文件夹
  336.                 If Right(MainForm.TreeView2.Nodes(i).Key, 1) = "" Then '是文件夹
  337.                    If InStr(1, UCase(MainForm.TreeView2.Nodes(i).Text), UCase(FindString)) Then
  338.                       Found = True
  339.                       FindFord MainForm.TreeView2.Nodes(i).Key
  340.                    End If
  341.                 End If
  342.             Else '只找文件
  343.                 If Check2.Value Then
  344.                 If Right(MainForm.TreeView2.Nodes(i).Key, 1) <> "" Then  '是文件夹
  345.                    If InStr(1, UCase(MainForm.TreeView2.Nodes(i).Text), UCase(FindString)) Then
  346.                       Found = True
  347.                       FindFord MainForm.TreeView2.Nodes(i).Key
  348.                    End If
  349.                 End If
  350.                 End If
  351.             End If
  352.           End If
  353.       Next
  354.       If Found Then
  355.          FindKey = "@@@@@***##查找结果@@@@@***##"
  356.          For i = 1 To MainForm.TreeView1.Nodes.Count
  357.              If MainForm.TreeView1.Nodes(i).Key = FindKey Then
  358.               If MainForm.TreeView1.Nodes(i).Children > 0 Then
  359.                 Set nox = MainForm.TreeView1.Nodes(i).Child
  360.                 For ii = 1 To MainForm.TreeView1.Nodes(i).Children
  361.                    fname = nox.Text + ".fnd"
  362.                     If Dir(fname) <> "" Then
  363.                        If nox.Text <> CdromName Then
  364.                           Kill fname
  365.                        End If
  366.                     End If
  367.                     If ii < MainForm.TreeView1.Nodes(i).Children Then
  368.                       Set nox = nox.Next
  369.                     End If
  370.                 Next
  371.              End If
  372.                 MainForm.TreeView1.Nodes.Remove i
  373.                 Exit For
  374.              End If
  375.          Next
  376.          MainForm.TreeView1.Nodes.Add , , FindKey, "查找结果", 5
  377.          MainForm.TreeView1.Nodes.Add FindKey, tvwChild, FindKey + CdromName, CdromName, 1
  378.       End If
  379.       Me.Caption = "查找"
  380.       Me.MousePointer = 0
  381.       If Found = False Then
  382.          Me.TreeView1.Nodes.Clear
  383.          sfiles = Dir("*.fnd")
  384.          Do While sfiles <> ""
  385.             Kill sfiles
  386.             sfiles = Dir
  387.          Loop
  388.          For i = 2 To MainForm.TreeView1.Nodes.Count
  389.              If MainForm.TreeView1.Nodes(i).Key = FindKey Then
  390.                 MainForm.TreeView1.Nodes.Remove i
  391.                 Exit For
  392.              End If
  393.          Next
  394.          MsgBox "很遗憾,没找到待查字串 " + Chr(34) + FindString + Chr(34) + Chr(13) + Chr(13) + "你可以搜索整个光盘库或某个类别,如果你这样做了,还找不到!" + Chr(13) + "很遗憾,你没有这种光盘!", vbExclamation
  395.        Else
  396.          MsgBox "恭喜,找到了待查字串 " + Chr(34) + FindString + Chr(34) + Chr(13) + Chr(13) + "请单击" + Chr(34) + "查找结果" + Chr(34) + "查看!", vbInformation
  397.          For i = 2 To MainForm.TreeView1.Nodes.Count
  398.              If MainForm.TreeView1.Nodes(i).Key = FindKey Then
  399.                 MainForm.TreeView1.Nodes(i).Expanded = True
  400.                 Exit For
  401.              End If
  402.          Next
  403.       End If
  404.       Unload Me
  405.    ''''''''''''''''''''''''''''''''''''''''''''''''
  406.    End If
  407. End Sub
  408. Private Sub Command2_Click()
  409. Unload Me
  410. End Sub
  411. Private Sub Form_Load()
  412. CencerForm Me
  413. Label2.Caption = Info
  414. End Sub
  415. Public Sub FindFord(sFoundString As String)
  416. Dim sNodeText As String
  417. Dim sNodeKey As String
  418. Dim k As Single, j As Single, i As Single
  419. fnum = FreeFile
  420. fname = CdromName + ".fnd"
  421. Open fname For Append As #fnum
  422.    k = 1
  423.    For i = 1 To Len(sFoundString)
  424.        If Mid(sFoundString, i, 1) = "" Then
  425.               sNodeText = Mid(sFoundString, k, i - k)
  426.               If Len(sNodeText) = 2 And Right(sNodeText, 1) = ":" Then
  427.                  sNodeText = sNodeText + ""
  428.               End If
  429.               sNodeKey = Left(sFoundString, i)
  430.               You = False '列表中有无该键名
  431.               For j = 1 To TreeView1.Nodes.Count
  432.                   If TreeView1.Nodes(j).Key = sNodeKey Then
  433.                      You = True
  434.                   End If
  435.               Next
  436.               If Not You Then
  437.                  fathernode = FindFather(sNodeKey, True)
  438.                  Print #fnum, sNodeKey
  439.                  TreeView1.Nodes.Add fathernode, tvwChild, sNodeKey, sNodeText
  440.               End If
  441.               k = i + 1
  442.        End If
  443.   Next
  444.   If i = k Then
  445.      Close fnum
  446.      Exit Sub
  447.   End If
  448.   If i > 1 And k > 1 Then
  449.      sNodeKey = sNodeKey + Mid(sFoundString, k)
  450.      sNodeText = Mid(sFoundString, k)
  451.      For i = Len(sNodeKey) To 1 Step -1
  452.          If Mid(sNodeKey, i, 1) = "" Then
  453.             skey = Left(sNodeKey, i)
  454.             Exit For
  455.          End If
  456.     Next
  457.     Print #fnum, sNodeKey
  458.     TreeView1.Nodes.Add skey, tvwChild, sNodeKey, sNodeText
  459.   End If
  460.   Close fnum
  461. End Sub
  462. Public Function FindFather(sFindString As String, Folder As Boolean) As String
  463. If Folder Then
  464.    ssFindString = Left(sFindString, Len(sFindString) - 1)
  465. End If
  466. For i = Len(ssFindString) To 1 Step -1
  467.     If Mid(ssFindString, i, 1) = "" Then
  468.        FindFather = Left(ssFindString, i)
  469.        Exit For
  470.     End If
  471. Next
  472. If InStr(1, FindFather, "") Then
  473. Else
  474.    FindFather = ssFindString
  475. End If
  476. End Function