Habilitar y deshabilitar controles ( aporte al foro )

ferherpe
14 de Julio del 2004
Saludos a todos los del foro.
En alguna ocasion nos vemos en la situacion de manejar texbox y/o botones de comando cmdbotton de diferentes caracteristicas en un mismo formulario, pero el usar la orden thisform.setall..... ya sea que nos deshabilite todo o nada, el caso es que queremos activar ciertas cosas y otras no.
Por ejemplo. Supongamos que tengamos 3 grupos de cmdbotton y ademas grupos de textbox tambien con diferentes caracts.
Como controlarlos dentro del formulario de acuerdo a lo que necesitamos sin afectar a los demas?
La solucion a esto es anteponer prefijos en un metodo y activarlos y/o desactivarlos a traves del metodo creado.
Por ejem:

Para un grupo de cmdbotton
Metodo activarboton
* Habilitar botones de comando
for I = 1 to thisform.ControlCount
if upper(thisform.Controls(I).name)=[B_]
thisform.Controls(I).enabled = .T.
endif
ENDFOR

Metodo activarbotonno
*Deshabilitar botones de comando
for I = 1 to thisform.ControlCount
if upper(thisform.Controls(I).name)=[B_]
thisform.Controls(I).enabled = .F.
endif
ENDFOR


Para otro grupo de cmdbotton
Metodo activarboton2
* Habilitar botones de comando
for I = 1 to thisform.ControlCount
if upper(thisform.Controls(I).name)=[N_]
thisform.Controls(I).enabled = .T.
endif
ENDFOR

Metodo activarboton2no
*Deshabilitar botones de comando
for I = 1 to thisform.ControlCount
if upper(thisform.Controls(I).name)=[N_]
thisform.Controls(I).enabled = .F.
endif
ENDFOR

Para llamarlos en el formulario en cuestion simplemente:
thisform.activarboton
thisform.activarbotonno, etc.

El criterio descrito anteriormente lo pueden aplicar a grupos de textbox (lo que importa es el prefijo), en grid, pageframe etc.

Ahora bien, si el criterio descrito anteriormente lo realizan en su clase de formbase, para cualquier formulario que se base en su formbase automaticamente hereda todo sus metodos y ya no hay que programar nada. Simplemente hay que llamarlos.

Espero que lo anterior le sea de utilidad a mas de un integrante de este foro y corresponder de alguna manera a quienes tambien me han ayudado a resolver problemas con esta pequeña aportacion de mi parte.
Saludos al foro
Ferherpe