Este ejemplo muestra de una forma fácil como
recorrer los controles contenidos en un
formulario, como preguntar por sus tipos y como
actuar en consecuencia. El código es sencillo y
puede ser utilizado sin ningún problema. Se
muestra en el código solo las funciones Disable,
las Enable tienen la misma estructura pero con el
código a la inversa.
Public Function DisableFrame(fraFrame
As Frame) As Boolean
Dim contrl As Control
On Error GoTo 0
With fraFrame
For Each contrl In .Parent.Controls
If TypeName(contrl) <>
"CommonDialog" Then
If contrl.Container.Name = .Name Then
If TypeName(contrl) = "Frame" Then
Call DisableFrame(contrl)
Else
Call DisableControl(contrl)
End If
End If
End If
Next contrl
End With
End Function
La función es
recursiva para permitir frames anidados. Otra
cosa a tener en cuenta es que no todos los
controles tienen container, por lo que tendremos
que preguntar en el bucle. A modo de ejemplo, en
esta función preguntamos por el control CommonDialog
.
DisableControl y EnableControl deberán ser
definidas a nuestro antojo para implementar el
efecto deseado. Como ejemplo, podrían ser: