El Guru Programador
Usuario DESCONOCIDO | Registrate Gratis | Usuarios Registrados
Foro de Visual Basic/VB.NET
Foros del Guru > Visual Basic/VB.NET
Usuario ¿Como seleccionar un directorio?
Desconocido
Enviado - 29/5/2003
 
Hola a tod@s

Estoy realizando una práctica en la que necesito pedir al usuario un directorio para dejar en él algunos ficheros. Para ello cogí la ventana de dialogo OpenFileDialog, pero no consigo que se seleccionen directorios (si lo selecciono y pincho en aceptar abre el directorio, no lo coje). Por ello me gustaría saber si hay alguna opción en este tipo de dialogos que sirva para indicar que lo que se quiere es abrir un directorio en lugar de un fichero o, en caso negativo, si existe alguna clase similar a OpenFileDialog (lo que sería un OpenFileDirectory).

Gracias y un saludo

 
Daniel_Panama
5 Mensaje(s)
Enviado - 29/5/2003
 
Option Explicit
Dim var_locate_server As String

Private Type BrowseInfo
hWndOwner As Long
pidlRoot As Long
sDisplayName As String
sTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type

Private Declare Function SHBrowseForFolder Lib "Shell32.dll" (bBrowse As BrowseInfo) As Long
Private Declare Function SHGetPathFromIDList Lib "Shell32.dll" (ByVal lItem As Long, ByVal sDir As String) As Long

' Let the user browse for a directory. Return the
' selected directory. Return an empty string if
' the user cancels.
Private Function BrowseForDirectory() As String
Dim browse_info As BrowseInfo
Dim item As Long
Dim dir_name As String

browse_info.hWndOwner = hwnd
browse_info.pidlRoot = 0
browse_info.sDisplayName = Space$(260)
browse_info.sTitle = "Select Directory"
browse_info.ulFlags = 1 ' Return directory name.
browse_info.lpfn = 0
browse_info.lParam = 0
browse_info.iImage = 0

item = SHBrowseForFolder(browse_info)
If item Then
dir_name = Space$(260)
If SHGetPathFromIDList(item, dir_name) Then
BrowseForDirectory = Left(dir_name, InStr(dir_name, Chr$(0)) - 1)
Else
BrowseForDirectory = ""
End If
End If
var_locate_server = dir_name
End Function

Private Sub cmdExaminar_Click()
MsgBox BrowseForDirectory
End Sub



Private Sub Form_Load()
var_locate_server = ""
End Sub

Private Sub Gravar_Click()
DataEnvironment1.rslocate_server.Open
DataEnvironment1.rslocate_server!direccion = var_locate_server
DataEnvironment1.rslocate_server.Update
DataEnvironment1.rslocate_server.Close
End Sub

Private Sub Volver_Click()
Unload Me
End Sub

Este codigo es tu Respuesta. Suerte...
 
 

 

Contactos myStudio Network