Botones de alternar

Resulta que tengo pretendo crear un formulario con una especie de test para guardar en una bd access. Sobre la bd no hay problema, e esta todo controlado. La duda me sobreviene dado que quiero hacer una pregunta para calificar 4 temas del 1 al 4.
Mi solución planteada es hacer 4 marcos con 4 botones alternados. El problema esta en que quiero que al seleccionar en un marco una calificación quiero que las que sean iguales en los demás marcos se anulen (enabled=true), pero para esto tengo que controlar los eventos de 16 botones de alternar claro.
¿Hay alguna otra opción que no sea tan costosa? ¿Podría hacer que los botones alternos también se excluyeran con los de otros marcos? (Eso seria lo ideal claro)
Respuesta
1
Solo para probar que no lo ha respondido otro... ahora te contesto
Ya. Como efectivamente era interesante tenía que probarlo antes de responder.
Como veo que te defiendes, te copio/pego el código que me ha resultado. Ahí va
Function getControl(marco As Control, valor%) As Control
Dim ctl As Control
For Each ctl In marco.Controls
If ctl.ControlType = acToggleButton Then
If ctl.OptionValue = valor Then
Set getControl = ctl
Exit Function
End If
End If
Next
MsgBox "no se encontró opción de valor " & valor & " en el marco " & marco.Name
End Function
Function respuesta()
Dim marco As Control, c, i%, j%
c = Array("MARCO0", "MARCO2", "MARCO4")
For i = LBound(c) To UBound(c)
Set marco = Me(c(i))
For j = 1 To 3
getControl(marco, j).Enabled = True
Next
Next
For i = LBound(c) To UBound(c)
Set marco = Me(c(i))
If Not IsNull(marco.Value) Then
For j = LBound(c) To UBound(c)
If i <> j Then
getControl(Me(c(j)), marco.Value).Enabled = False
End If
Next
End If
Next
End Function
dentro de cada uno de los marcos le tienes que poner en el evento 'despues de actualizar'
=respuesta()
Así tienes sólo 4 procedimientos de evento, que además llaman a la misma función. Fíjate que he puesto en un array el nombre de los controles, ponle los tuyos. En cuanto a la primera función, es una auxiliar que dado un marco y un valor, devuelve el botón que tiene ese valor.
Ojo que en todos los marcos tienen que estar definidos los mismos botones (p. Ej. 4 botones con valores de 1 a 4).
Para que te deje hacer cosas, inicialmente tendrían que estar los 4 marcos en el valor nulo, y tendrías que poner un botón de 'borrar marco' por cada uno si quieres que se puedan modificar las respuestas una vez relleno el formulario.
Bueno, tu dirás. Quiero un 5 ;-)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas