Hola amigos.
En otro mensaje preguntaban como obtener las "Labels" del formulario y me pareció oportuno crear un post mas amplio que englobe unas cuantas mas posibilidades similares.
Hace tiempo el compañero Shordi me enseño a crear controles por código para editar datos de una base de datos, y desde entonces he ido usando este método en diferentes variantes. La mas elegante, creo, es la de crear un panel y dentro de este poner un "Label" y un "TextBox" o un "ValueBox" o lo que sea que requiera el dato en cuestión. Pero sucede que luego el código que gestione los eventos de cada uno de esos controles debe valer para todos ellos y es cuando se trabaja con LAST, PARENT, TAG etc. que son diferentes opciones para restringir el conjunto sobre el que se actuara.
Si por ejemplo tenemos un panel con dos controles dentro para cada campo y queremos que al cambiar el valor de texto del TextBox se ponga en rojo la TextLabel que se encuentra en el mismo panel, no es necesario recorrero todos los controles del formulario sino que solo los del panel "Parent".
Código:
Public Sub elGrupo_Change()
Dim ob As Object
For Each ob In Last.Parent.Children
If Object.Type(ob) = "Label" Then
ob.Foreground = Color.Red
Endif
Next
End
Se puede "jugar" con diferentes niveles de anidamiento, propiedades como si es visible o no, y también se pueden borrar los controles que ya no son necesarios con algo como
[code]
Lo cual eliminaría el mismo control que origino el evento, no lo probé pero tal vez funcione.
Saludos.