for security purpose when certain group of users log in, i want to set everything on all forms as readonly.I agree with Alex that the proper way to do this is to make each control responsible for its own state in response to a change of condition on the form.
i am thinking of creating a custom class and put it on the form. now in the init of this class, i will loops through each and every control on th form and mark them as readonly or enable=.f. . the code has to be recursive so that if there is a pageframe or container object on form , it goes and loops through all objects on pageframe/container too.Although a recursive algorithm is not really suitable for what you want to do here, it is handy to have one available, so here it is:
LPARAMETERS toObject
LOCAL loObject
IF INLIST( LOWER( ALLTRIM( toObject.BaseClass ) ), ;
[form], [pageframe], [page], [container], [grid], [column] )
FOR EACH loObject IN toObject.Objects
Thisform.DrillDown( loObject )
ENDFOR
ELSE
ENDIF