Me gustaría preguntaros si es posible pasar a un procedimiento un tipo de contenedor variable, que se encargará de mostrar en el formulario.
Imaginar que tengo un formulario y una vez quiero crear un Hbox y otra vez quiero crear un VBox.
¿ Qué tipo de clase debo poner como argumento al procedimiento ?.
No me parece que funcione el contenedor organizador como debiese.
Ya sabemos que el propio formulario es un contenedor de controles.
Os muestro el código.
Public Sub Form_Open()
Dim unhbox As HBox
Dim unvbox As VBox
'Esto hace que funcione y no por el tipo de contenedor organizador
Me.Arrangement = Arrange.Horizontal
Me.Margin = True
Me.Spacing = True
Me.AutoResize = True
'Quiero pasar uno u otro
CrearContenedor(unhbox)
'Luego le paso los dos tipos
' CrearContenedor(unvbox)
End
Public Sub CrearContenedor(untipodecontenedor As Container)
'El procedimiento debe aceptar cualquiera de los dos
Dim nomimagenes As New String[]
Dim unpicturebox As PictureBox
Dim i As Integer
'Parece que no puedo instanciar la clase contenedora
untipodecontenedor = Container(Me)
nomimagenes = Dir(Application.Path, "*.gif", gb.file)
For i = 0 To nomimagenes.Max
unpicturebox = New PictureBox(untipodecontenedor)
With unpicturebox
.Picture = Picture.Load(Application.Path &/ nomimagenes[i])
.W = 256
.h = 192
.Border = Border.Solid
End With
Next
End
Dim unhbox As HBox
Dim unvbox As VBox
'Esto hace que funcione y no por el tipo de contenedor organizador
Me.Arrangement = Arrange.Horizontal
Me.Margin = True
Me.Spacing = True
Me.AutoResize = True
'Quiero pasar uno u otro
CrearContenedor(unhbox)
'Luego le paso los dos tipos
' CrearContenedor(unvbox)
End
Public Sub CrearContenedor(untipodecontenedor As Container)
'El procedimiento debe aceptar cualquiera de los dos
Dim nomimagenes As New String[]
Dim unpicturebox As PictureBox
Dim i As Integer
'Parece que no puedo instanciar la clase contenedora
untipodecontenedor = Container(Me)
nomimagenes = Dir(Application.Path, "*.gif", gb.file)
For i = 0 To nomimagenes.Max
unpicturebox = New PictureBox(untipodecontenedor)
With unpicturebox
.Picture = Picture.Load(Application.Path &/ nomimagenes[i])
.W = 256
.h = 192
.Border = Border.Solid
End With
Next
End
De por si solo, el organizador hubiera mostrado las dos imágenes una al lado de la otra, ya que le paso un hbox al procedimiento.
Quedando las imágenes así: ( Tan solo es un único organizador).
Ahora fijaros que le paso primero un hbox y luego un vbox....pero parece que lo que manda es la distribución del contenedor padre. El formulario.
Si el Vbox creado esta al lado del Hbox y la alineación del formulario es horizontal. ¿ No debería al menos el vbox haber mostrado las imágenes una debajo de la otra ?
Saludos