WITH This IF INLIST( .RowColChange, 1, 3 ) *** If we are trying to move to a new row *** validate the current row IF NOT EOF( .RecordSource ) AND RECCOUNT( .RecordSource ) > RECNO( .RecordSource ) *** Do not allow the move if the validation fails IF .ValidateCurrentRow() *** peachy keen go ahead and move off the row ELSE NODEFAULT ENDIF ENDIF ENDIF ENDWITHValidateCurrentRow is a template method and the validation code goes in the instance on the form. The nice thing about doing it this way is that all the logic goes into my data entry grid class and the only thing I have to write in the instance is the actual validation.