FOR EACH loColumn IN THIS.COLUMNS *** replace the header with custom header class *** created in code IF !EMPTY(THIS.cHeaderClass) SET PROCEDURE TO VSOClasses.prg ADDITIVE FOR EACH loObj IN loColumn.CONTROLS IF loObj.BASECLASS = 'Header' *** Save the changed properties lnProps = AMEMBERS( laProps, loObj, 0, 'C' ) DIMENSION laVals[ lnProps ] FOR lnCnt = 1 TO lnProps laVals[ lnCnt ] = EVALUATE( 'loObj.' + laProps[ lnCnt ] ) ENDFOR lcName = loObj.NAME loColumn.REMOVEOBJECT(lcName) loColumn.ADDOBJECT(lcName + "_new", THIS.cHeaderClass) loHeader = EVALUATE("loColumn." + ALLTRIM(lcName) + "_new") FOR lnCnt = 1 TO lnProps lcProp = 'loHeader.' + laProps[ lnCnt ] &lcProp = laVals[ lnCnt ] ENDFOR EXIT ENDIF ENDFOR ENDIF ... ... ENDFOR