LPARAMETERS toColumn LOCAL loObj, lnProps, lcName, loHeader, loErr, lnCnt LOCAL ARRAY laProps[1] FOR EACH loObj IN toColumn.CONTROLS IF loObj.BASECLASS = 'Header' *** Save the changed properties lnProps = AMEMBERS(laProps, loObj) *** store the property values DIMENSION laVals[lnProps] FOR lnCnt = 1 TO lnProps laVals[lnCnt] = EVALUATE('loObj.' + laProps[lnCnt]) ENDFOR *** replace the header with custom header class *** created in code lcName = loObj.NAME toColumn.REMOVEOBJECT(lcName) toColumn.ADDOBJECT(lcName + "_new", THIS.cHeaderClass) loHeader = EVALUATE("toColumn." + ALLTRIM(lcName) + "_new") loHeader.NAME = lcName *** Restore the changed properties FOR lnCnt = 1 TO lnProps lcProp = 'loHeader.' + laProps[lnCnt] TRY &lcProp = laVals[lnCnt] CATCH TO loErr IF loErr.ERRORNO = 1743 *** Property BASECLASS is read-only. Ignore ELSE THROW ENDIF ENDTRY ENDFOR ENDIF ENDFOR toColumn = .NULL. loObj = .NULL. loHeader = .NULL.