The xDir events and properties can be used to implement your own search criteria. Suppose that you need to find all files containing the string "photo" in their names or contents. Obviously, if a file contains the word "photo", there is no need to check its contents. The implementation of this logic with xDir, which can be used instead of the intrinsic VB/VBA Dir function, is trivial.
Suppose we have a form with a ListBox named lstResults to display the sought filenames when the user presses the cmdSearch command button. The corresponding xDir code will look like the following:
Implements IXDItemCheck Implements IXDFoundItem Private Sub cmdSearch_Click() Dim xd As New xDir xd.RootFolder = ".\TestFolder\" xd.FileCriteria.Context.SearchPhrases = "photo" xd.ProcessFolder Me End Sub Private Sub IXDItemCheck_Proc(ByVal ParentFullPath As String, _ ByVal ItemName As String, ByVal ItemType As EItemTypes, _ SkipItem As Boolean, CancelEnum As Boolean, _ ByVal UserValue As Long) If LCase$(ItemName) Like "*photo*" Then lstResults.AddItem ParentFullPath & ItemName SkipItem = True End If End Sub Private Sub IXDFoundItem_Proc(ByVal ParentFullPath As String, _ ByVal ItemName As String, ByVal ItemType As EItemTypes, _ CancelEnum As Boolean, ByVal UserValue As Long) lstResults.AddItem ParentFullPath & ItemName End Sub
The key point of this code is that we must check filenames yourself, and force xDir to check file contents only. We check the filename in the
IXDItemCheck_Proc sub and ignore further search in the file contents by assigning True to the
SkipItem parameter passed by reference. If we specified the required file mask with the statement
xd.FileCriteria.Mask = "*photo*"
, xDir would not search the word "photo" inside a file whose name does not contain this word because xDir checks the file mask first and searches the specified word in the file contents only if the filename matches the specified mask. Actually we would search for all files containging the word "photo" both in filenames and contents.
As you can see from this example, xDir provides you with a lot of useful events and properties that allow you to implement your own file/folder search operations.