Scroll horizontal en ListBox y Treeview

Hola, encantado de volver a aprender contigo.
1.- En un formulario voy añadiendo información y veo que automáticamente se genera un scroll vertical. ¿Cómo se hace para que salga también el scroll horizontal? En las opciones de los TextBox he visto que sí lo contempla, pero en las listas no lo encuentro.
2.- También le estoy dando vueltas a obtener una ventana en donde aparezca mi árbol de directorios, de manera que pueda yo seleccionar los directorios que necesite y se vayan añadiendo a una columna concreta de la hoja activa.
Buscando buscando encontré el comando Treeview, pero ni encuentro información en la ayuda que me aclare ni soy capaz de dar con la clave.
Gracias por atenderme
1

1 respuesta

Respuesta
1
Para los cuadros de lista, el que aparezca o no la barra de desplazamiento horizontal va en función del ancho de la columna, busca la propiedad ColumnWidths y juega con diferentes valores, veras como aparece la barra de desplazamiento horizontal
Para tu árbol de directorios, no te recomiendo el uso del control TreeView, hay que usar recursividad para llenarlo y no es tan simple, prueba mejor con API para mostrar el cuadro de selección de directorios prueba el siguiente código en un formulario...
Option Explicit
Const MAX_PATH = 255
Private Enum eBIF
BIF_RETURNONLYFSDIRS = &H1 'Sólo directorios del sistema
BIF_DONTGOBELOWDOMAIN = &H2 'No incluir carpetas de red
BIF_STATUSTEXT = &H4
BIF_RETURNFSANCESTORS = &H8
BIF_BROWSEFORCOMPUTER = &H1000 'Buscar PCs
BIF_BROWSEFORPRINTER = &H2000 'Buscar impresoras
End Enum
Private Type BrowseInfo
hwndOwner As Long
pIDLRoot As Long 'Especifica dónde se empezará a mostrar
pszDisplayName As Long
lpszTitle As Long
ulFlags As Long
lpfnCallback As Long
lParam As Long
iImage As Long
End Type
Private Declare Function SHBrowseForFolder Lib "shell32.dll" _
(lpbi As BrowseInfo) As Long
Private Declare Sub CoTaskMemFree Lib "ole32.dll" _
(ByVal hMem As Long)
Private Declare Function lstrcat Lib "kernel32.dll" Alias "lstrcatA" _
(ByVal lpString1 As String, ByVal lpString2 As String) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" _
(ByVal pidList As Long, ByVal lpBuffer As String) As Long
'Si se quiere usar en un form, cambiar el public por private
Private Function BrowseForFolder(ByVal hwndOwner As Long, ByVal sPrompt As String, Optional ByVal vFlags As eBIF) As String
'
Dim iNull As Integer
Dim lpIDList As Long
Dim lResult As Long
Dim sPath As String
Dim udtBI As BrowseInfo
Dim lFlags As Long
If Not IsMissing(vFlags) Then
lFlags = CInt(vFlags)
End If
With udtBI
.hwndOwner = hwndOwner
.lpszTitle = lstrcat(sPrompt, "")
.ulFlags = lFlags Or BIF_RETURNONLYFSDIRS
End With
lpIDList = SHBrowseForFolder(udtBI)
If lpIDList Then
sPath = String$(MAX_PATH, 0)
lResult = SHGetPathFromIDList(lpIDList, sPath)
Call CoTaskMemFree(lpIDList)
iNull = InStr(sPath, vbNullChar)
If iNull Then
sPath = Left$(sPath, iNull - 1)
End If
Else
'Se ha pulsado en cancelar
sPath = ""
End If
BrowseForFolder = sPath
End Function
Private Sub UserForm_Click()
MsgBox BrowseForFolder(0, "Selecciona un directorio")
End Sub
Por razones personales estaré fuera de TodoExpertos un tiempo, te agradeceré finalizaras esta pregunta en cuanto te sea posible.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas