El recurso siguiente muestra como se pueden utilizar desde LotusScript funciones del sistema Windows
en concreto se detalla el proceso para poder utilizar el cuadro de diálogo "Seleccionar carpeta".
1. Paso: Crear una nueva biblioteca de Scripts llamada FuncionesSistema.
2. Paso: Situar el siguiente código en el apartado (Options):
Option Public
Option Declare
%INCLUDE "LSCONST.LSS"
Const BIF_RETURNONLYFSDIRS = 1
Const BIF_DONTGOBELOWDOMAIN = 2
Const MAX_PATH = 260
|
3. Paso: situar el siguiente código en el apartado (Declarations):
Type BrowseInfo
hWndOwner As Long
pIDLRoot As Long
pszDisplayName As Long
lpszTitle As String
ulFlags As Long
lpfnCallback As Long
lParam As Long
iImage As Long
End Type
Declare Function SHBrowseForFolder Lib "shell32" Alias "SHBrowseForFolderA" ( lpbi As BrowseInfo ) As Long
Declare Function SHGetPathFromIDList Lib "shell32" Alias "SHGetPathFromIDListA" ( Byval pidList As Long, Byval lpBuffer As String ) As Long
Declare Function FindWindow95 Lib "user32" Alias "FindWindowA" ( Byval lpClassName As Any, Byval lpWindowName As Any ) As Long
|
4. Paso: Crear una nueva función llamada ElegirCarpeta con el siguiente código:
Function ElegirCarpeta ( dialogPrompt As String ) As String
Dim lpIDList As Long
Dim sBuffer As String * 255
Dim sReturnVal As String
Dim szTitle As String
Dim tBrowseInfo As BrowseInfo
sBuffer = String ( Len ( sBuffer ) , Chr(0) )
szTitle = dialogPrompt
tBrowseInfo.hWndOwner = FindWindow95 ( "notes", &H0 )
tBrowseInfo.lpszTitle = szTitle
tBrowseInfo.ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN
lpIDList = SHBrowseForFolder ( tBrowseInfo )
If ( lpIDList ) Then
SHGetPathFromIDList lpIDList, sBuffer
ElegirCarpeta = Left ( sBuffer, Instr ( sBuffer, Chr(0) ) - 1)
End If
End Function
|
5. Paso: Ya podemos crear un botón de acción allí donde deseemos y hacer que ejecute la función anterior del siguiente modo (recordar añadir en las opciones globales Use "FuncionesSistema"):
Sub Click(Source As Button)
Dim workspace As New NotesUIWorkspace
Dim doc As NotesDocument
Dim folder As String
folder = ElegirCarpeta ( "Seleccione una carpeta: " )
msg = "La carpeta elegida es: " & Chr$(10) & Chr$(10) & folder
Msgbox msg, MB_OK + MB_ICONINFORMATION, "Carpeta elegida"
End Sub
|
Explicación:
En este ejemplo solamente visualizamos la carpeta elegida mediante un cuadro de mensajes. Lo normal sería que el valor devuelto por la función fuera utilizado para los fines que se deseen.
Existen otras funciones del sistema Windows que se pueden utilizar desde LotusScript: Abrir archivo, barra de progreso, cuadro de mensajes, etc. De todas formas en la versión 5 ya se han incorporado nuevos métodos en la librería de objetos LotusScript para poder realizar muchas de estas funciones. |