Saturday, June 19, 2010

Browse for Folder - Lotus Script

Lotus script Function OpenFileDialog will show a dialog box and it will allow us to select only file. It wont allow us to select folder or we can't use this function to restrict the user to select only folder. It is big deal in a certain point where we want the user should select only folder and not a file. How to solve this issue?. we can achieve this by using windows API. This solution will work only in windows platform.
Create an agent and place the below code in Declaration part.

' Flags for the options parameter
Const BIF_returnonlyfsdirs   = &H0001
Const BIF_dontgobelowdomain  = &H0002
Const BIF_statustext         = &H0004
Const BIF_returnfsancestors  = &H0008
Const BIF_editbox            = &H0010
Const BIF_validate           = &H0020
Const BIF_browseforcomputer  = &H1000
Const BIF_browseforprinter   = &H2000
Const BIF_browseincludefiles = &H4000

Dim wsh, objDlg, objF


Create below two functions


%REM
    Function browse_folder
    Comments: Check whether the value has been returned.
%END REM
Function IsValue(obj)
    Dim tmp
    On Error Resume Next
    tmp = " " & obj
    If Err <> 0 Then
        IsValue = False
    Else
        IsValue = True
    End If
    On Error GoTo 0
End Function

%REM
    Function browse_folder
   Comments: Main function for browse folder
%END REM
Function browse_folder()
    Dim objDlg
    Dim objF
' Get Application object of the Windows shell.
Set objDlg = CreateObject("Shell.Application")

' Use the BrowseForFolder method.
Set objF = objDlg.BrowseForFolder (&H0, _
    "Select the folder to copy", _
    BIF_editbox + BIF_returnonlyfsdirs)

' Here we use the first method to detect the result.
If IsValue(objF) Then
    MsgBox "Selected folder: " & objF.Title
Else
    MsgBox "Canceled"
End If

' Here we use TypeName to detect the result.
If InStr(1, TypeName(objF), "Folder") > 0 Then
    MsgBox "Selected folder: " & objF.Title
Else
    MsgBox "Canceled"
End If
End Function


Call the function as below 
browse_folder()

 

No comments:

Post a Comment