DEFINE CLASS grdvalidate AS grid Name = "grdvalidate" *-- Control losing focus PROTECTED lastcontrol PROCEDURE BeforeRowColChange LPARAMETERS nColIndex * Save control ref that's losing focus as txt this.lastcontrol = "this.columns("+ltrim(str(this.activecolumn))+ ")."+; this.columns(this.activecolumn).currentcontrol ENDPROC PROCEDURE Valid with evaluate(this.lastcontrol) lCanLeave = .valid() && Explicitly call valid of control endwith return lCanLeave && if control.valid returns .f. do not let grid lose focus ENDPROC ENDDEFINEOf course this one assumes validation code is in "currentcontrol" and should be polished for other cases (ie: dynamicurrentcontrol used and valid code is there). But so few ppl use dynamiccurrentcontrol (I think). And also doesn't deal with extra cosmetics like selectall for control when validation return .f. At last it's a simple class demonstrating grid.control.valid could work when clicked outside too.