Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Contenedores, HBox,HPanel, ScrollView
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Contenedores, HBox,HPanel, ScrollView 
 
Hola!.

Estaba probando un ejemplo con contenedores. Tengo un contenedor padre ScrollView.
Dentro de este hay dos contenedores Hbox y a su vez dentro de los Hbox, botones repartidos
dentro de estos.

El problema que me encuentro es que según voy añadiendo botones a los Hbox su tamaño debería aumentar
y eso a su vez hace que la barra horizontal del ScrollView deba aparecer. Pero no lo hace, algo hago mal.
Esta es la imagen de como queda:

 botoneshboxsscrollview

Como veis el botón que tiene como texto Bloque4 no se ve, pero tampoco aparece la barra horizontal del ScrollView.

Os muestro el código:

Public Sub Form_Open()
Dim ohbox1, ohbox2 As HBox
Dim otlb As Button
Dim contador As Integer = 1


ohbox1 = CreaHBox(HPanel1.Width, 100, HPanel1, ohbox1)
CreaBoton(100, 50, "Bloque " & CStr(contador), ohbox1)
contador += 1
CreaBoton(200, 50, "Bloque " & CStr(contador), ohbox1)
contador += 1
CreaBoton(100, 50, "Bloque " & CStr(contador), ohbox1)
contador += 1
CreaBoton(200, 50, "Bloque " & CStr(contador), ohbox1)
contador += 1

ohbox2 = CreaHBox(HPanel1.Width + 200, 100, HPanel1, ohbox2)
CreaBoton(200, 50, "Bloque " & CStr(contador), ohbox2)
contador += 1
CreaBoton(200, 50, "Bloque " & CStr(contador), ohbox2)
contador += 1
CreaBoton(100, 50, "Bloque " & CStr(contador), ohbox2)

End

Public Sub CreaBoton(ancho As Integer, alto As Integer, nombre As String, contenedor As HBox)
  Dim otlb As Button
  
  otlb = New Button(contenedor)
  With otlb
    .Width = ancho
    .Height = alto
    .Text = nombre  
  End With
    
End

Public Function CreaHBox(ancho As Integer, alto As Integer, contenedor As HPanel, objeto As HBox) As HBox
    
  objeto = New HBox(contenedor)
  With objeto
    .Width = ancho
    .Height = alto  
    .AutoResize = True    
  End With
  Return objeto
    
End
 


Y si queréis probarlo aquí tenéis el ejemplo.
También estuve probando a pasar por referencia los Hbox a un procedimiento para crearlos y no usar función que devuelva un componente.
Puede que con función quede mejor esa forma de crear el objeto Hbox.

Hubiera quedado de esta forma, la forma de llamarlo y el procedimiento.
Pero preferí usar función.


....
CreaHBox(HPanel1.Width, 100, HPanel1, ByRef ohbox1)
......

Public Sub CreaHBox(ancho As Integer, alto As Integer, contenedor As HPanel, ByRef objeto As HBox)
    
  objeto = New HBox(contenedor)
  With objeto
    .Width = ancho
    .Height = alto  
    .AutoResize = True    
  End With
      
End
 


Saludos

Contenedores.tar.gz
Descripción:  
Descargar
Nombre del archivo: Contenedores.tar.gz
Tamaño: 5.21 KB
Descargado: 42 veces
Contenedores.tar.gz
Descripción:  
Descargar
Nombre del archivo: Contenedores.tar.gz
Tamaño: 5.21 KB
Descargado: 42 veces
Contenedores.tar.gz
Descripción:  
Descargar
Nombre del archivo: Contenedores.tar.gz
Tamaño: 5.21 KB
Descargado: 42 veces

 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Miercoles, 28 Enero 2015, 20:33; editado 1 vez 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Contenedores, HBox,HPanel, ScrollView 
 
Olvide comentar que estoy usando también un hPanel, que seguramente es el problema, que deba tomar el ancho del Hbox mayor según varía este.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Miercoles, 28 Enero 2015, 20:35; editado 1 vez 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Contenedores, HBox,HPanel, ScrollView 
 
A bote pronto no veo problemas en tu código... salvo que utilizas controles creados en tiempo de ejecución y eso no sé muy bien cómo se lleva con lo del Arrangement... ¿antes?¿después?¿lo ignora? Misterios...
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Contenedores, HBox,HPanel, ScrollView 
 
Shordi:

El único componente que tiene activa la propiedad Arrangement es el ScrollView. Esta puesta a Fill
Pretendo que los HBox estén uno debajo del otro.

El HPanel que contiene los HBox tiene activada su propiedad Expand a True.
Y los HBox carecen de propiedad Arrangement.

Quizás no estoy dándole un uso adecuado al componente ScrollView.
Probare a hacer un experimento con un GridView a ver que tal sale.

Que se haga en tiempo real es necesario hacerlo así, en principio no se sabe el tamaño que cada botón.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Contenedores, HBox,HPanel, ScrollView 
 
Citar:
Y los HBox carecen de propiedad Arrangement.

Es cierto y no lo es. Carecen de la propiedad arrangement porque su nombre ya lleva implícito que es Horizontal, con lo que no hay por qué exponer publicamente ese valor, pero el método Arrangement sí lo tienen internamente. De ahí que sí tienen un evento BeforeArrange. Supongo que es en ese evento en el que deberías recalcular el ancho de la ventana  o algo así (léase intentar refrescar el scrollview o yo qué sé) para que contemple los controles creados por código.

Saludos
 



 
última edición por shordi el Viernes, 30 Enero 2015, 11:05; editado 1 vez 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Contenedores, HBox,HPanel, ScrollView 
 
Es que el ScrollView en sí mismo está diseñado para alojar contenido de mayor tamaño que su parte visible y precisamente muestra barras de desplazamiento para poder ver las partes que quedan ocultas.

Entonces, la propiedad Arrangement no entiendo cómo calcula el espacio, puesto que al ScrollView se le supone "infinito" (o al menos más grande que incluso la pantalla).

En mi opinión, no parece buena idea mezclar ScrollView con otro tipo de contenedores, sin aplicar algún límite dentro de su propio área, como un panel de dimensiones fijas para que los cálculos de Arrangement tengan sentido.

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Contenedores, HBox,HPanel, ScrollView 
 
Siguiendo la explicación de jguardon: he "agrandado" de ancho el HPanel1 para que se "salga" de la parte visible del scrollview, y al scrollview, he he puesto su propiedad arrangement como "None", y ya aparece la barra del scrollview (tanto en tiempo de ejecución como en diseño):



 contenedor_scrollview

Contenedores-0.0.3.tar.gz
Descripción:  
Descargar
Nombre del archivo: Contenedores-0.0.3.tar.gz
Tamaño: 5.11 KB
Descargado: 45 veces
Contenedores-0.0.3.tar.gz
Descripción:  
Descargar
Nombre del archivo: Contenedores-0.0.3.tar.gz
Tamaño: 5.11 KB
Descargado: 45 veces
Contenedores-0.0.3.tar.gz
Descripción:  
Descargar
Nombre del archivo: Contenedores-0.0.3.tar.gz
Tamaño: 5.11 KB
Descargado: 45 veces

 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Contenedores, HBox,HPanel, ScrollView 
 
Lo de usar un tamaño fijo era una posibilidad.  Os muestro de donde tomé la idea para crear un ejemplo con contenedores.

http://www.elmundo.es/elmundo/television/guiatv/

Lo que primero que se me ocurrió fue un ScrollView. No es que sea el mismo componente, claro.
Si pasáis el cursor del ratón por encima de los distintos programas de televisión, se sombrea al igual que un botón.
Si hacemos clic en uno de estos botones se nos abre una ventana mostrando una información.
Además tenemos el desplazamientos de los cursores superiores.

En este caso sabemos que tenemos 24h y que sobre esa medida se van a distribuir los distintos programas televisivos según su horario. (botones)
Vemos textos que van en dos lineas o más dentro de esos botones.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Contenedores techm3 Controles/Librerías/Componentes 2 Domingo, 26 Diciembre 2010, 06:04 Ver último mensaje
techm3
No hay nuevos mensajes Problemas ToggleButton's Con HBox kotonfree General 2 Viernes, 28 Enero 2011, 20:04 Ver último mensaje
soplo
No hay nuevos mensajes Ejemplo De Uso Del Contenedor ScrollView jsbsan Aplicaciones/Fragmentos de Código 4 Lunes, 04 Marzo 2013, 20:24 Ver último mensaje
Shell
No hay nuevos mensajes Contenedores Y Forms shordi Controles/Librerías/Componentes 4 Viernes, 19 Diciembre 2014, 13:53 Ver último mensaje
shordi
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron