• Domingo 22 de Diciembre de 2024, 19:33

Autor Tema:  Re: CommonDialog para Carpetas  (Leído 2414 veces)

Bish

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: CommonDialog para Carpetas
« en: Viernes 4 de Julio de 2003, 19:25 »
0
Por favor necesito seleccionar una carpeta pero el commondialog solo selecciona archivos.:think:

ROBER.29

  • Miembro MUY activo
  • ***
  • Mensajes: 421
    • Ver Perfil
    • http://www.contrapixel.com
Re: CommonDialog para Carpetas
« Respuesta #1 en: Lunes 7 de Julio de 2003, 08:30 »
0
Pon el siguiente código en un formulario:

RichTextBox1.Text = Module1.GetFolder(Form1.hWnd, "Select folder")

En un módulo:

Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Declare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long

Const BIF_RETURNONLYFSDIRS = &H1
Const BIF_DONTGOBELOWDOMAIN = &H2
Const BIF_STATUSTEXT = &H4
Const BIF_RETURNFSANCESTORS = &H8
Const BIF_BROWSEFORCOMPUTER = &H1000
Const BIF_BROWSEFORPRINTER = &H2000


Type BROWSEINFO
  hOwner As Long
  pidlRoot As Long
  pszDisplayName As String
  lpszTitle As String
  ulFlags As Long
  lpfn As Long
  lParam As Long
  iImage As Long
End Type

Function GetFolder(ByVal hWndOwner As Long, ByVal sTitle As String) As String
Dim bInf As BROWSEINFO
Dim RetVal As Long
Dim PathID As Long
Dim RetPath As String
Dim Offset As Integer
    bInf.hOwner = hWndOwner
    bInf.lpszTitle = sTitle
    bInf.ulFlags = BIF_RETURNONLYFSDIRS
    PathID = SHBrowseForFolder(bInf)
    RetPath = Space$(512)
    RetVal = SHGetPathFromIDList(ByVal PathID, ByVal RetPath)
    If RetVal Then
      Offset = InStr(RetPath, Chr$(0))
      GetFolder = Left$(RetPath, Offset - 1)
    End If
End Function


Con esto te aparecerá el selector de carpeta de windows.

Saludos.
Roberto García
Moderador de Visual Basic.
Gerente
[contra]PixeL S.L.
Valladolid

Bish

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
CommonDialog para Carpetas
« Respuesta #2 en: Domingo 13 de Julio de 2003, 21:43 »
0
Gracias Rober.:jumpie: