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
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