*Grid.Dragover lparameters oSource, nXCoord, nYCoord, nState lnDummyCol = 3 && A dummy col that would be activated with this if nState = 0 .setfocus() endif nNewRow = int((nYCoord - .headerheight - objtoclient(this,1))/.rowheight)+1 * Doesn't have vertical scrollbar or not on vertical bar area if .scrollbars < 2 or nXCoord < objtoclient(this,2)+.width - sysmetric(5) do case * Top thirds of top row case nYCoord < objtoclient(this,1)+.headerheight+.rowheight/3 .doscroll(2) && Scroll page up * Bottom thirds of bottom row case nYCoord > objtoclient(this,1)+.height-.rowheight/3 .doscroll(3) && Scroll page down endcase else && On vertical bar area lnVerticalBarEnd = .height - iif(.scrollbars = 3, sysmetric(8), 0) do case * On Top scroll arrow case between(nYCoord-objtoclient(this,1), 0, sysmetric(6)) .doscroll(0) && Scroll up case between(nYCoord-objtoclient(this,1), ; lnVerticalBarEnd - sysmetric(6), ; lnVerticalBarEnd) && On bottom scroll arrow .doscroll(1) && Scroll down endcase endif .activatecell(nNewRow,lnDummyCol) && Activate a dummy cell .refresh endwithThis works with VFP5 too, in VFP6 there is GridHitTest which could ease the math.