*pre VFP6 LPARAMETERS nColIndex llChangingRow = .f. with this oColumn = .columns(.FindColumn(nColIndex)) if lastkey() = 145 && Adding new rec .nLastValidRec = .nCurrec endif thisform.LockScreen = .lInGrid if mdown() lnBottom = .top+.headerheight+.relativerow * .rowheight lnTop = lnBottom - this.rowheight lnMouseRowPos = mrow(wontop(),3) lnMouseColPos = mcol(wontop(),3) llChangingRow = !(between(lnMouseRowPos,lnTop, lnBottom) ; and between(lnMouseColPos,.left,.left+.width)) else llChangingRow = inlist(lastkey(),24,5,18,3,145,148) endif if llChangingRow and !.CanLeave() nodefault *... else *... endif endwith *VFP6 *mdown portion changes if mdown() store 0 to nWhere, nRelrow, nRelCol llLeavingRow = !This.GridHittest(mcol(wontop(),3), mrow(wontop(),3), ; @nWhere, @nRelRow, @nRelCol) ; or !(nWhere=3 and this.RelativeRow = nRelRow ) else *... endifEven with rowbuffering user could be prevented to change record. However though it fires even if you click outside of grid just BRCC code is not sufficient to control it. You should support the code with grid.valid too.