⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 task_search.bas

📁 B6 And Windows
💻 BAS
字号:
Attribute VB_Name = "Task_Search"
'this module was designed to search a treeview for certain data

Option Explicit
Public Enum Searchtyp
    FINDBY_HANDLE
    FINDBY_TEXT
    FINDBY_EXECUTABLE
End Enum
Public Enum Find_Flags
    First
    FindNext
End Enum
Public FindAgain As Boolean

Public Function FindText(sWhich As Find_Flags, DaNode As TreeView, Optional searchtype As Searchtyp) As Boolean

  Static sStringToFind As String ' Search the node text
  Static iNodeItem As Long ' Last node found (for repeat)
  Static stype As Searchtyp
  Dim i As Integer, s As String
  Dim anode As Node
  Dim iWindow As Long
  Dim found As Long

    If IsMissing(searchtype) Then
        Stop
    End If

    ' First time -- Ask for search string
    '  and display any previous search string
    If sWhich = Find_Flags.First Then
        stype = searchtype
        sStringToFind = InputBox("Enter the item to find. Searches are not case sensitive.", "Find")
        iNodeItem = 0
      Else
        searchtype = stype
    End If
    iWindow = DaNode.Nodes.Count
    ' Do search
    If sStringToFind <> "" Then
        For i = iNodeItem + 1 To iWindow - 1
            Select Case searchtype
              Case Searchtyp.FINDBY_TEXT
                found = InStr(LCase$(DaNode.Nodes(i).Text), LCase$(sStringToFind))
              Case Searchtyp.FINDBY_HANDLE
                If Val(Mid$(DaNode.Nodes(i).Key, 2)) = Val(sStringToFind) Then
                    found = 1
                End If
              Case Searchtyp.FINDBY_EXECUTABLE
                found = InStr(LCase$(GetExeFromHandle(Val(Mid$(DaNode.Nodes(i).Key, 2)))), LCase$(sStringToFind))
            End Select
           
            If found Then
                iNodeItem = i
                DaNode.Nodes(iNodeItem).Selected = True
                DaNode.Nodes(iNodeItem).EnsureVisible
                Set DaNode.SelectedItem = DaNode.Nodes(iNodeItem)
                DaNode.SetFocus
                Exit For
            End If
        Next i
        ' No match
        If i = iWindow Then
            If sWhich = First Then
                MsgBox "No match to " & sStringToFind
              Else
                MsgBox "No more matches For " & sStringToFind
            End If
        End If
        DaNode.SetFocus
    End If
    FindText = Not (i = iWindow)
    FindAgain = FindText
    Set DaNode = Nothing

End Function

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -