Private Sub ColorizeGrid(ctrl As Object)
Dim o As Object
Dim sClass As String
sClass = Object.Class(ctrl).Name
If sClass = "GridView" Or If sClass = "Label" Then ' Si es Gridview o Label cambiamos los colores
ctrl.Background = Color.lightGray
ctrl.Foreground = Color.DarkRed
Endif
If Object.Class(ctrl).Exist("Children") And If ctrl.Children.count > 0 Then 'Si es un contenedor, recursivo a sus hijos
For Each o In ctrl.Children
ColorizeGrid(o)
Next
Endif
End
Private Sub ColorizeGrid(ctrl As Object)
Dim o As Object
Dim sClass As String
sClass = Object.Class(ctrl).Name
If (sClass = "GridView" Or sClass = "Label") And If Not Object.Is(ctrl.Parent, "Usercontrol") Then ' Si es Gridview o Label cambiamos los colores
ctrl.Background = Color.lightGray
ctrl.Foreground = Color.DarkRed
Endif
If Object.Class(ctrl).Exist("Children") And If ctrl.Children.count > 0 Then 'Si es un contenedor, recursivo a sus hijos
For Each o In ctrl.Children
ColorizeGrid(o)
Next
Endif
End
...
If Object.Class(ctrl).Exist("Children") And If ctrl.Children.count > 0 And sClass <> "ListBox" Then 'Si es un contenedor, recursivo a sus hijos
For Each o In ctrl.Children
ColorizeGrid(o)
Next
Endif
...
Cita:¿ Entonces no quieres que se coloreé el ListBox ?.No exactamente: No quiero que se coloree ningún control contenido en un control que no sea un contenedor... no sé si me explico. Listbox contiene un gridview, pero Listbox mismo no es un contenedor de controles "per se".
Cita:Para mi la solución ideal seria dejar un "rastro" ya sea en el Name, en el Group o en el Tag para sean aplicables (o no) al cambio de "skin" del programa.Así no fallas, pero no te vale para cualquier control "normal", que no lleve ese Tag, o Nombre o lo que sea. Además te obliga a, en tiempo de diseño, ir recordando y colocando qué tag debe tener qué control, etc. y yo estoy buscando algo más universal.
[code]
Private Sub ColorizeGrid(ctrl As Object)
Dim o As Object
Dim sClass As String
sClass = Object.Class(ctrl).Name
If sClass = "GridView" Or If sClass = "Label" Then ' Si es Gridview o Label cambiamos los colores
If Not Object.GetProperty(ctrl, "Colorize") Then Return ''Nueva propiedad
ctrl.Background = Color.lightGray
ctrl.Foreground = Color.DarkRed
Endif
If Object.Class(ctrl).Exist("Children") And If ctrl.Children.count > 0 Then 'Si es un contenedor, recursivo a sus hijos
For Each o In ctrl.Children
ColorizeGrid(o)
Next
Endif
End