Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

Organizar controles en formularios. Controles no visibles
#1

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:

[Imagen: 3ktQE75.png]

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.

[Imagen: VQDImoq.png]

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.

GAMBAS
  1. Private grupoficheros As New String[]
  2.  
  3. Public Sub btndSelectDir_Click()
  4.  
  5.  
  6.   grupoficheros.Clear()
  7.  
  8.   Dialog.Title = "Selecione un directorio"
  9.   If Dialog.SelectDirectory() Then Return
  10.  
  11.   grupoficheros = Dir(Dialog.Path, "*.*", gb.File).Sort()
  12.  
  13.   Indexar(grupoficheros, TabStrip1)
  14.   TabStrip1.Visible = True
  15.  
  16.   For i = 0 To TabStrip1.Count - 1
  17.     TabStrip1.Index = i   
  18.     CrearGridView(TabStrip1, carchivos[TabStrip1.Current.Text])
  19.   Next
  20.   btndSelectDir.Enabled = False
  21.  
  22.  
  23. Public Sub Indexar(atmp As String[], tabstripficheros As TabStrip)
  24.  
  25.   Dim letra As String
  26.   Dim archivo As String
  27.   Dim aarchivos As String[]
  28.   Dim i As Integer  
  29.  
  30.   i = 0
  31.  
  32.   For Each archivo In atmp
  33.     letra = Left(archivo, 1)
  34.     If Not carchivos.Exist(letra) Then
  35.       aarchivos = New String[]
  36.       carchivos[letra] = aarchivos
  37.       tabstripficheros.Count = i + 1
  38.       tabstripficheros[i].Text = letra
  39.       carchivos[letra].add(archivo)
  40.       Inc i
  41.     Else
  42.       carchivos[letra].add(archivo)
  43.     Endif
  44.   Next
  45.  
  46.  
  47. Public Sub CrearGridView(contenedor As TabStrip, lista As String[])
  48.  
  49.   Dim ggridview As GridView
  50.   Dim filas As Integer
  51.  
  52.   If lista.Count = 0 Then Return
  53.  
  54.   ggridview = New GridView(contenedor) As "hgrd"
  55.   With ggridview
  56.     .Expand = True
  57.     .Columns.Count = 1
  58.     .Rows.Count = 1
  59.     .Header = GridView.Both
  60.     .Mode = Select.Single
  61.     .ScrollBar = Scroll.Both
  62.  
  63.   filas = 0
  64.   'Rellenar las celdas  
  65.   For x = 0 To lista.Max
  66.     ggridview.Rows.Count = filas + 1
  67.     ggridview[x, 0].Text = lista[x]
  68.     Inc filas   
  69.   Next
  70.  
  71.  
  72. Public Sub Form_Open()
  73.  
  74.   TabStrip1.Visible = False
  75.  



Y su código fuente.

Saludos

Un muelle entre el tabStrip y el contenedor inferior

[Imagen: fOM59N3.png]

Cuando se ejecuta bien, pero cuando el tabstrip aparece..

[Imagen: zfVy83e.png]

Problema de contenedores.


Archivos adjuntos
.gz MostrarArchivosPorIndice-0.0.1.tar.gz Tamaño: 12.5 KB  Descargas: 2

"Pero no toques, por qué tocas? - Amador"
    ¡Gracias!
#2

Solución:

TabStrip en Contenedor con Arrangement a Fill, este se expande, así que si el tabstrip no existe, rellena el hueco.
Distribución y orientación queda así:

[Imagen: Z6g6otH.png]

Que pasen un buen día.

"Pero no toques, por qué tocas? - Amador"
[-] Los siguientes 2 usuarios dicen gracias a Shell por este post:
  • jsbsan, Shordi
    ¡Gracias!


Posibles temas similares…
Tema / Autor Respuestas Vistas Último mensaje

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)