Hace ya tiempo hablamos de como insertar un checkbox en un gridview.
Tuvimos problemas y tambien estuvimos barajando la posibilidad de insertar una imagen de un checkbox dentro
de la celda del gridview.
Alguien, creo que Vuott, averiguó la forma. De un componente dedujo como poder hacerlo en el Gridview.
Para ello necesitábamos la propiedad .Children del control GridView y el indice. 0 en este caso.
El tema del índice no sé si es posible usar otros. En ese Índice se guarda la colección de los controles
de su interior.
Que rectifiquen lo que dije si me equivoque en algo.
Mi idea es la de tener distintas columnas y en cada una tener distintos checkboxes.
Logré hacer algo como esto:
Lo que quiero es que el centro de cada checkbox quede lo más centrado dentro del centro de cada celda.
Lo hice a voleo, pero supongo que es posible hallar una formula para hacerlo mejor.
Este fue el código:
El ancho del GridView lo hice de dos formas. Con la primera se puede observar el efecto que dije.
Public Sub Form_Open()
Dim chkbox As CheckBox
Dim x, y As Integer
With GridView1
.Columns.Count = 5
.Columns.Width = 50
.Width = .Columns.Count * .Columns.Width
'A ojo
'.Width = .Columns.Count * .Columns.Width + 10
End With
For x = 0 To 4
GridView1.Rows.Count += 1
For y = 0 To 4
With chkbox = New CheckBox(GridView1.Children[0]) As "Chkgrupo"
.Tag = x
.Value = False
'Se intenta situar cada centro de los checkboxes en los centros de cada celda del Gridview1
'Tomo 10 como un valor por defecto. A ojo
.X = GridView1[x, y].X + GridView1[x, y].Width / 2 - 10
.Y = GridView1[x, y].Y + GridView1[x, y].Height / 2 - 10
'Tomo 12 como un valor por defecto. A ojo
.w = GridView1[x, y].Width - 12
.h = GridView1[x, y].Height
End With
Next
Next
End
Dim chkbox As CheckBox
Dim x, y As Integer
With GridView1
.Columns.Count = 5
.Columns.Width = 50
.Width = .Columns.Count * .Columns.Width
'A ojo
'.Width = .Columns.Count * .Columns.Width + 10
End With
For x = 0 To 4
GridView1.Rows.Count += 1
For y = 0 To 4
With chkbox = New CheckBox(GridView1.Children[0]) As "Chkgrupo"
.Tag = x
.Value = False
'Se intenta situar cada centro de los checkboxes en los centros de cada celda del Gridview1
'Tomo 10 como un valor por defecto. A ojo
.X = GridView1[x, y].X + GridView1[x, y].Width / 2 - 10
.Y = GridView1[x, y].Y + GridView1[x, y].Height / 2 - 10
'Tomo 12 como un valor por defecto. A ojo
.w = GridView1[x, y].Width - 12
.h = GridView1[x, y].Height
End With
Next
Next
End
Un problema que observo. La primera fila de checkboxes parece estar en los títulos del grdiview!.
No puedo poner títulos de esta forma!.
Os voy a subir el código tambien para que lo probéis. Probar a desplazar la scrollbar horizontal
veréis que efecto ocurre.
He de decir que la propiedad Arrangement del formulario está en horizontal.
No quería que se quedase el control mal distribuido en el formulario y más siendo el solo.
Ejemplo de uso. Ver en un grid los permisos de un archivo. (Sin retocarlos, claro ).
Pero esto es solo la parte gráfica, un pequeño intento.
Saludos