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
Function browse_folder
Comments: Check whether the value has been returned.
%END REM
%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
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
Function browse_folder
Comments: Main function for browse folder
%END REM
Function browse_folder()%END REM
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