|
Página 1 de 1
|
Contenedores, HBox,HPanel, ScrollView
Autor |
Mensaje |
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
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:
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.
Saludos
Descripción: |
|
Descargar |
Nombre del archivo: |
Contenedores.tar.gz |
Tamaño: |
5.21 KB |
Descargado: |
46 veces |
Descripción: |
|
Descargar |
Nombre del archivo: |
Contenedores.tar.gz |
Tamaño: |
5.21 KB |
Descargado: |
46 veces |
Descripción: |
|
Descargar |
Nombre del archivo: |
Contenedores.tar.gz |
Tamaño: |
5.21 KB |
Descargado: |
46 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
|
#1 Miercoles, 28 Enero 2015, 20:30 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
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
|
#2 Miercoles, 28 Enero 2015, 20:35 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
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...
|
#3 Jueves, 29 Enero 2015, 20:22 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
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"
|
#4 Viernes, 30 Enero 2015, 10:31 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
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
|
#5 Viernes, 30 Enero 2015, 11:04 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
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"
|
#6 Viernes, 30 Enero 2015, 14:49 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Contenedores, HBox,HPanel, ScrollView
|
#7 Viernes, 30 Enero 2015, 20:34 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
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"
|
#8 Sabado, 31 Enero 2015, 10:43 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 0 invitados Usuarios registrados conectados: Ninguno
|
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
|
|
|
|
|