x =1 FOR EACH oControl IN Thisform.Controls IF UPPER(Thisform.Controls(x).Baseclass)=UPPER("commandbutton") Thisform.cambianombre(x) &&& just a sample method where you &&& can do anything you want with the &&& control(s) that meet the criteria ELSE IF UPPER(Thisform.Controls(x).Baseclass)=UPPER("container") Thisform.llamada(oControl) &&& sample method to do whatever &&& you want to do with a control &&& inside a container placed on &&& the form ENDIF Endif x=x+1 NEXTI know this method has some flaws, for instance it's not fully recursive and you have to handcode the baseclass of the controls you want to cicle through.