for each oControl in THISFORM.Controls if pemstatus(oControl,"ReadOnly",5) then oControl.ReadOnly = .T. endif endforThis is very easy for me because in my container classes (e.g. forms, option groups, containers), I have code in a ReadOnly_Assign method that if the ReadOnly property of the container is being set to .T., then it propagates that to its members. Otherwise, you have to check for the existence of the Controls or Buttons property and go through these.