Matriz de botones
Que tal colega, estoy inscrito en esta categoría como experto y el objetivo es llegar a saber una buena porción de lo que ustedes los "gurús" del excel saben.
Aclaro que la pregunta que hago es personal y no obedece a ninguna consulta que me hayan hecho a mi.
Tengo la idea de hacer un formulario con una matriz de botones, he logrado hacer la matriz de variables y asignar valores con el tipo de datos que he creado, también intentando por otro lado he logrado dibujar todos los botones a través de macro (es mejor que dibujarlos pues son 64) pero no logro dibujarlos como objetos de una matriz y menos asignarles valores personalizados a los mismos.
Como solución había optado por manejar dos matrices una con variables y otra con objetos, con la de variables voy bien pero con la de objetos casi que voy de para atrás.
Te adjunto los códigos de lo que he tratado de hacer a ver si te queda más fácil corregirlos que pensar todo.
Este es el que funciona para dibujar los botones
Private Sub UserForm_Initialize()
Dim arriba, izquierda, medida As Integer
medida = 30
arriba = medida
izquierda = medida + 5
For i = 1 To 8
For j = 1 To 8
Set Boton = Controls.Add("Forms.CommandButton.1", ij)
Boton.Left = izquierda
Boton.Top = arriba
Boton.Width = medida
Boton.Height = medida
izquierda = izquierda + medida
Next j
izquierda = medida + 5
arriba = arriba + medida
Next i
IniciarMatriz (Pantalla)
'Pantalla.Show
End Sub
Con este inicio la matriz de variables y me funciona aceptablemente
Option Base 1
Public Type casilla
lleno As Boolean
color As String
vecinos As Boolean
valido As Boolean
End Type
Dim casillas(8, 8) As casilla
Dim tablero(8, 8) As CommandButton
Sub IniciarMatriz(form As UserForm)
f = 1
c = 1
Do While f <= 8
Do While c <= 8
If (c = 4 Or c = 5) And (f = 4 Or f = 5) Then
If (c = 4 And f = 4) Or (c = 5 And f = 5) Then
casillas(f, c).color = "azul"
Else
casillas(f, c).color = "rojo"
End If
casillas(f, c).lleno = True
casillas(f, c).valido = False
Else
casillas(f, c).lleno = False
End If
c = c + 1
Loop
f = f + 1
Loop
End Sub
El problema es que necesitaría vincular las 2 matrices o poder asignar propiedades a la matriz de botones para poder hacer lo que deseo.
Bueno, espero me puedas ayudar.
Cordialmente,
Cesar mera
Aclaro que la pregunta que hago es personal y no obedece a ninguna consulta que me hayan hecho a mi.
Tengo la idea de hacer un formulario con una matriz de botones, he logrado hacer la matriz de variables y asignar valores con el tipo de datos que he creado, también intentando por otro lado he logrado dibujar todos los botones a través de macro (es mejor que dibujarlos pues son 64) pero no logro dibujarlos como objetos de una matriz y menos asignarles valores personalizados a los mismos.
Como solución había optado por manejar dos matrices una con variables y otra con objetos, con la de variables voy bien pero con la de objetos casi que voy de para atrás.
Te adjunto los códigos de lo que he tratado de hacer a ver si te queda más fácil corregirlos que pensar todo.
Este es el que funciona para dibujar los botones
Private Sub UserForm_Initialize()
Dim arriba, izquierda, medida As Integer
medida = 30
arriba = medida
izquierda = medida + 5
For i = 1 To 8
For j = 1 To 8
Set Boton = Controls.Add("Forms.CommandButton.1", ij)
Boton.Left = izquierda
Boton.Top = arriba
Boton.Width = medida
Boton.Height = medida
izquierda = izquierda + medida
Next j
izquierda = medida + 5
arriba = arriba + medida
Next i
IniciarMatriz (Pantalla)
'Pantalla.Show
End Sub
Con este inicio la matriz de variables y me funciona aceptablemente
Option Base 1
Public Type casilla
lleno As Boolean
color As String
vecinos As Boolean
valido As Boolean
End Type
Dim casillas(8, 8) As casilla
Dim tablero(8, 8) As CommandButton
Sub IniciarMatriz(form As UserForm)
f = 1
c = 1
Do While f <= 8
Do While c <= 8
If (c = 4 Or c = 5) And (f = 4 Or f = 5) Then
If (c = 4 And f = 4) Or (c = 5 And f = 5) Then
casillas(f, c).color = "azul"
Else
casillas(f, c).color = "rojo"
End If
casillas(f, c).lleno = True
casillas(f, c).valido = False
Else
casillas(f, c).lleno = False
End If
c = c + 1
Loop
f = f + 1
Loop
End Sub
El problema es que necesitaría vincular las 2 matrices o poder asignar propiedades a la matriz de botones para poder hacer lo que deseo.
Bueno, espero me puedas ayudar.
Cordialmente,
Cesar mera
1 Respuesta
Respuesta de fejoal
1