Det kode er godt, men det gør ikke rigtig det jeg gerne vil have det til. Det var mig der udtrykte mig forkert.
Det koden også skal kunne er: når man f. eks skriver: *.avi så skal den finde alle filer der har endelsen .avi
Jeg håber at du, Jan Toft, eller andre kan hjælpe. Det ville være rigtig lækkert hvis jeg kunne få det til at virke. Jeg er ikke så god til programmering endnu, men man lærer jo altid [Redigeret d. 04/07-02 19:51:34 af Christian Hansen]
JT
Jeg havde engentlig regnet med, at de sidste små tilpasninger kunne du selv have lavet ,men fordi det nu er dig så har jeg tilføjet en linje mere.
Option Explicit
Private Declare Function GetInputState Lib "user32" () As Long
Dim CancelSøgning As Boolean
Const StartSøg = "Start Søgning"
Const StopSøg = "Stop Søgning"
' for test lav en form med en Treeview control samt en 2 Textboxe og en CommandButton
' References : Microsoft Scripting Runtime
' controls : Microsoft Copmmon Control 6.0 (SP4)
Private Sub Command1_Click()
If Command1.Caption = StopSøg Then CancelSøgning = True
If Text2.Text <> "" And Command1.Caption = StartSøg Then
CancelSøgning = False
Command1.Caption = StopSøg
Call LoadTreeView("C:", True, UCase(Text2.Text))
Command1.Caption = StartSøg
MsgBox ("Søgning Færdig")
End If
End Sub
Private Sub LoadTreeView(strpath As String, FirstLoop As Boolean, Search As String)
Dim objFolder As Variant
Dim objFolders As Variant
Dim objFiles As Variant
Dim objFile As Variant
Dim objfso As Variant
Dim UserFilm As Node
Dim c As Integer
Dim names, SubNode As String
' On Error Resume Next: I tilfælde af SystemFolder
On Error Resume Next
Set objfso = New FileSystemObject
If FirstLoop = True Then
TreeView1.Nodes.Clear
' Set TreeView1.ImageList = ImageList1 ' bruges hvis man ønsker Iconer
TreeView1.Nodes.Add , , "Root", "Søger efter """ & Search & """"
' -----------Check for wildcards Du kan selv putte flere ind her hvis du ønsker----------------------------
If Left(Search, 2) = "*." Then Search = Mid(Search, 2)
' I stedet for instr(start,string1,string2,CompareMetod) kan man jo også bruge left(string,len) og right(string,len) og Mid(string,start,len)
End If
If GetInputState <> 0 Then DoEvents ' ser om keboard elle mus er blevet rørt
Set objFolders = objfso.GetFolder(strpath & "\\").SubFolders
'Finder folders
For Each objFolder In objFolders
' kan unlades hvis større hastighed ønskes ----------------------
Text1.Text = strpath & "\\" & objFolder.Name
DoEvents ' ønskes større hastig fjernes denne
' ---------------------------------------------------------------
c = InStr(1, UCase(objFolder.Name), Search, vbTextCompare)
If c > 0 Then
TreeView1.Nodes.Add "Root", tvwChild, strpath & "\\" & objFolder.Name, objFolder.Name ', FolderIcon
DoEvents ' ønskes større hastig fjernes denne
End If
' kalder sig selv for at gå dybere i fil strukturen (recursiv)
If FirstLoop = False Then TreeView1.Nodes(1).Expanded = True
Call LoadTreeView(strpath & "\\" & objFolder.Name, False, Search)
If CancelSøgning Then Exit Sub
'finder filer
Set objFiles = objfso.GetFolder(strpath & "\\" & objFolder.Name).Files
For Each objFile In objFiles
' kan unlades hvis større hastighed ønskes ----------------------
Text1.Text = strpath & "\\" & objFolder.Name & "\\" & objFile.Name
' DoEvents ' ønskes større hastig fjernes denne
'----------------------------------------------------------------
c = InStr(1, UCase(objFile.Name), Search, vbTextCompare)
If c > 0 Then
' gemmer resultatet i Treeview Control
TreeView1.Nodes.Add "Root", tvwChild, strpath & "\\" & objFolder.Name & "\\" & objFile.Name, objFile.Name ',FileIcon
DoEvents ' ønskes større hastig fjernes denne
End If
Next
Next
If FirstLoop = False Then
Set objFiles = objfso.GetFolder(strpath & "\\").Files
' finder filer i root folder
For Each objFile In objFiles
' kan unlades hvis større hastighed ønskes ----------------------
Text1.Text = strpath & "\\" & objFile.Name
DoEvents ' ønskes større hastig fjernes denne
' ---------------------------------------------------------------
c = InStr(1, UCase(objFile.Name), Search, vbTextCompare)
If c > 0 Then
' gemmer resultatet i Treeview Control
TreeView1.Nodes.Add "Root", tvwChild, strpath & "\\" & objFile.Name, objFile.Name ', FileIcon
'DoEvents ' ønskes større hastig fjernes denne
End If
Next
End If
End Sub
Private Sub Form_Load()
Dim a As Double
Command1.Caption = StartSøg
a = 3.141592654 * 2
End Sub
Private Sub TreeView1_Click()
Text1.Text = TreeView1.SelectedItem.Key ' Viser hele stien
End Sub