Const MARGEN As Integer = 8
Const NUMPICTUREBOXES As Integer = 8
Private anomimagenes As String[] = ["Gambas3.png", "Python.png"] 'No es necesario del todo, en este caso solo son dos imagenes
Public Sub Form_Open()
Randomize
Me.Arrangement = Arrange.Fill ' Según cambio el tamaño del formulario se ajustan los controles que tiene el ScrollView
With ScrollView1
.Arrangement = Arrange.Row
.Background = Color.Black
.Spacing = True
.Margin = True
.Padding = MARGEN
End With
InsertarImagenes(anomimagenes)
End
Public Sub InsertarImagenes(simagenes As String[])
Dim j As Integer
Dim unpicturebox As PictureBox
For j = 0 To NUMPICTUREBOXES - 1
unpicturebox = New PictureBox(ScrollView1) As "Observador"
With unpicturebox
.W = 64
.H = 64
.Picture = Picture.Load(Application.Path &/ simagenes[Rand(1)])
.Border = True
.Background = Color.White
.Mode = PictureBox.Contain
.Tag = j
End With
Next
''FIXME: Ajustar ancho y alto del ScrollView al tamaño de los controles contenidos
With ScrollView1
' Menos 2 debido al contador de Pictureboxes, su indice es NUMPICTUREBOXES
.W = ((NUMPICTUREBOXES - 1) * 64 + MARGEN * (NUMPICTUREBOXES - 2)) / 2
.H = ((NUMPICTUREBOXES - 1) * 64 + MARGEN * (NUMPICTUREBOXES - 2)) / 2
End With
End
Public Sub Observador_MouseDown()
Dim colorcontrario As Integer
Dim listadeindices As New Integer[]
For j As Integer = 0 To ScrollView1.Children.Max
listadeindices.Add(j)
Next
'Por defecto. Intercambiamos el color
If Last.Background = Color.Green Then
Last.Background = Color.White
colorcontrario = Color.Green
Else
Last.Background = Color.Green
colorcontrario = Color.White
Endif
'Eliminamos la posibilidad de que se pueda cambiar el color de fondo del picturebox seleccionado
'Para esto he creado una listadeindices
listadeindices.Remove(Last.tag)
'Al resto de los picturebox no seleccionados, se les camnbia el color del fondo
For j As Integer = 0 To listadeindices.Max
ScrollView1.Children[listadeindices[j]].Background = colorcontrario
Next
End
(06-06-2024, 22:10)tercoide escribió: Estoy lidiando desde hace tiempo con los ScrollView me han agotado y opte por no usarlos. No se llevan bien con los otros contenedores.
Cita:Si quisiera ajustar su ancho y alto al tamaño que tienen sus hijos instantáneamente, ¿ es posible ?.Tal como lo planteas, no. Hasta donde sé, el Arrangement se "ejecuta" de arriba abajo, es decir primero el formulario y luego los controles contenidos. Si estableces un arrangement al formulario de Fill, el tamaño del scrollview será el mismo que el de el formulario y los controles que contenga el scrollview se ubicarán después. Por tanto lo que especificas en el código de:
(07-06-2024, 07:37)Shordi escribió: No sé qué quieres hacer exactamente, pero yo lo que haría es utilizar un Gridview, no un scrollview.
Cita:No me vale un GridView para este tipo de aplicación. Es una "especie" de visor y organizador de imágenes.En el último vídeo (de momento) de la serie de "Creando una aplicación desde cero" tienes un ejemplo de cómo organizar y ver imágenes con un gridview. Si eso no te vale, no he dicho nada y me callo.
(07-06-2024, 17:39)Shordi escribió: En el último vídeo (de momento) de la serie de "Creando una aplicación desde cero" tienes un ejemplo de cómo organizar y ver imágenes con un gridview. Si eso no te vale, no he dicho nada y me callo.