******************************************************************** * Description.......: BeforeRowColChange * Calling Samples...: * Parameter List....: * Created by........: Marcia Akins * Modified by.......: ******************************************************************** LPARAMETERS nColIndex with this if .lValidatingRow nodefault else .nRec2Validate = recno(.recordsource) dodefault(m.ncolindex) endif endwith *!* ******************************************************************** *!* * Description.......: AfterRowColChange *!* * Calling Samples...: *!* * Parameter List....: *!* * Created by........: Marcia Akins *!* * Modified by.......: *!* ******************************************************************** lparameters ncolindex local lnRec2GoTo with this *** If there is no record to validate, exit stage left if .nRec2Validate = 0 return endif *!* *** Save the current record number in case we have changed rows lnRec2GoTo = recno( .recordsource ) *** Check to see if the row has changed if .nRec2Validate # m.lnRec2GoTo *** We are validating the row we are attempting to leave...set the flag .lValidatingRow = .t. *** Return to the record we just left goto .nRec2Validate in ( .recordsource ) *** If it checks out, let the user move to the new row if .ValidateCurrentRow() goto m.lnRec2GoTo in ( .recordsource ) endif *** Finished with validation...reset flag .lValidatingRow = .f. endif endwith dodefault(m.ncolindex)I use my own textbox classes inside the grid columns instead of standard classes. The problem is, that somehow user defined properties became invisible for the grid, e.g. I get errors like property DoValid is not found. My textbox class indeed has this property. Sometimes it's even can not find the grid's custom property.