Buenas!.
He creado un ejemplo que tomando un directorio, indexa todos los nombres de los archivos y los muestra en un TabStrip.
En este caso, una vez que se muestran los archivos se desactiva el botón de seleccionar directorio.
La salida es esta:
El formulario tiene su propiedad arrangement a vertical. Activadas a True, tanto Margin como Spacing.
El botón está dentro de un contenedor junto con un muelle y tiene su arrangement a horizontal
El TabStrip tiene su arrangement a vertical y su propiedad Expand a True.
Se muestra así en modo diseño.
Al ejecutarlo por primera vez, vemos el TabStrip tal como se ve en esa imagen, vacío,
pero se ve.
Si lo hacemos no visible, el contenedor donde se encuentra el botón subirá arriba y una vez se haya seleccionado
un directorio, volverá a su lugar, mostrándose correctamente. No queda arriba y debajo el TabStrip ( eso es correcto).
¿ No creéis que el contenedor donde se encuentra el botón debería quedarse mejor abajo al inicio ?.
Pero al hacerse invisible TabStrip, desaparece este y sube el otro contenedor donde esta el botón.
No existe control que lo empuje abajo.
¿ Qué debería ser lo más estético ?.
El tema del control de errores puede no estar depurado, si recibe datos el array de los datos creo que lo solucioné.
Últimamente usando la clase Dialog, me muestra errores en la salida de consola cuando no hago algo bien.
( Creo que esto no solía mostrarse en otras versiones de Gambas, puede que se haya añadido con el tiempo, me parece bien).
Os adjunto el código.
Código:
Private grupoficheros As New String[]
Private carchivos As New Collection
Public Sub btndSelectDir_Click()
Dim i As Integer
grupoficheros.Clear()
Dialog.Title = "Selecione un directorio"
If Dialog.SelectDirectory() Then Return
grupoficheros = Dir(Dialog.Path, "*.*", gb.File).Sort()
Indexar(grupoficheros, TabStrip1)
TabStrip1.Visible = True
For i = 0 To TabStrip1.Count - 1
TabStrip1.Index = i
CrearGridView(TabStrip1, carchivos[TabStrip1.Current.Text])
Next
btndSelectDir.Enabled = False
End
Public Sub Indexar(atmp As String[], tabstripficheros As TabStrip)
Dim letra As String
Dim archivo As String
Dim aarchivos As String[]
Dim i As Integer
i = 0
For Each archivo In atmp
letra = Left(archivo, 1)
If Not carchivos.Exist(letra) Then
aarchivos = New String[]
carchivos[letra] = aarchivos
tabstripficheros.Count = i + 1
tabstripficheros[i].Text = letra
carchivos[letra].add(archivo)
Inc i
Else
carchivos[letra].add(archivo)
Endif
Next
End
Public Sub CrearGridView(contenedor As TabStrip, lista As String[])
Dim ggridview As GridView
Dim filas As Integer
Dim x As Integer
If lista.Count = 0 Then Return
ggridview = New GridView(contenedor) As "hgrd"
With ggridview
.Expand = True
.Columns.Count = 1
.Rows.Count = 1
.Header = GridView.Both
.Mode = Select.Single
.ScrollBar = Scroll.Both
End With
filas = 0
'Rellenar las celdas
For x = 0 To lista.Max
ggridview.Rows.Count = filas + 1
ggridview[x, 0].Text = lista[x]
Inc filas
Next
End
Public Sub Form_Open()
TabStrip1.Visible = False
End
Y su código fuente.
Saludos
Un muelle entre el tabStrip y el contenedor inferior
Cuando se ejecuta bien, pero cuando el tabstrip aparece..
Problema de contenedores.