**************** with thisform * code from 06/06/2002 Vlad Grynchyshyn local oObj if type('thisform.activecontrol.name')='C' .OR. type('thisform.activecontrol.name')='N' oObj = .activecontrol && If it's a grid, we need to calculate the active control if upper(m.oObj.baseclass) == "GRID" nIndex = m.oObj.activecolumn for i=1 to m.oObj.columncount if m.oObj.columns(i).columnorder = nIndex nIndex = i exit endif endfor oObj = m.oObj.columns(nIndex) oObj = evaluate("m.oObj." + m.oObj.currentcontrol) endif && Check if control has different value than its ControlSource if ( proper(m.oObj.baseclass)='Textbox' .OR. proper(m.oObj.baseclass)='Spinner' ) ; and not empty(m.oObj.controlsource) ; and !(m.oObj.value==evaluate(m.oObj.controlsource)) m.oObj.value = m.oObj.value && Updated:NN: 06/07/02 lReturn = m.oObj.valid() && This is enough to write changes into ControlSource if (vartype(m.lReturn)='N' and m.lReturn = 0) or m.lReturn = .f. return .f. endif endif endif endwith