by FiveWiDi » Mon Nov 27, 2006 8:10 am
Buenas,
Yo utilizo 3 funciones:
1ª Agrupa los controles que me interesan en una array y asigna color
2ª Read Only YES -> "Deshabilita" los controles
3ª Read Only NO -> Habilita los controles
1ª Esta se llama al crear la ventana/diálogo
FUNCTION lGroupGetEdit( oWnd, aGets )
Local nContador := 0
If ValType( oWnd:aControls ) = "A"
AEval( oWnd:aControls, {|oCtrl| If( ( "TGET" $ oCtrl:ClassName() ), ;
AADD( aGets, oCtrl ), Nil ) } )
AEval( oWnd:aControls, {|oCtrl| If( ( "TJ02GET" $ oCtrl:ClassName() ), ;
AADD( aGets, oCtrl ), Nil ) } )
AEval( oWnd:aControls, {|oCtrl| If( ( "TJ02GET" $ oCtrl:ClassName() ), ;
( oCtrl:nYFClrPane := J02CLRFONDOEDIT, ;
oCtrl:nYFClrText := J02CLRTEXTOEDIT ), ;
Nil ) } )
AEval( oWnd:aControls, {|oCtrl| If( oCtrl:ClassName() == "TGROUP", ;
lGroupGetEdit( oCtrl, aGets ), Nil ) } )
AEval( oWnd:aControls, {|oCtrl| If( oCtrl:ClassName() == "TFOLDER", ;
AEval( oCtrl:aDialogs, ;
{|oDlg| lGroupGetEdit( oDlg, aGets ) } ), ;
Nil ;
) ;
} ;
)
EndIf
2ª Esta se llama al crear la ventana/diálogo o cuando se acaba de modificar/editar los campos.
FUNCTION ROYes( AMPAarra, aGets )
Local nContador := 0
For nContador := 1 To Len( aGets )
If "CHECKBOX" $ aGets[nContador]:ClassName()
/* Si el checkbox está deshabilitado no cambia el color del fondo, por tanto se procede
a habilitar el control y a continuación a realizar el cambio de color.
------------------------------------------------------------------------------------
*/
aGets[nContador]:Enable()
aGets[nContador]:SetColor( J02CLRTEXTO,J02CLRFONDO )
aGets[nContador]:Disable()
Else
aGets[nContador]:lReadOnly := .T.
aGets[nContador]:lUpdate := .T.
EndIf
Endfor
Return Nil
3ª Esta se llama cuando se desea modificar/editar los campos.
FUNCTION RONo( AMPAarra, aGets )
Local nContador := 0
For nContador := 1 To Len( aGets )
If "CHECKBOX" $ aGets[nContador]:ClassName()
aGets[nContador]:SetColor( J02CLRTEXTOEDIT, J02CLRFONDOEDIT )
aGets[nContador]:Enable()
Else
aGets[nContador]:Enable()
aGets[nContador]:lReadOnly := .F.
aGets[nContador]:lUpdate := .F.
EndIf
Endfor
Return Nil
Saludos
Carlos G.