lparameter pcOrder, plAscending local i, j, llLockScreen, lnRecno, lnRelativeRow, lnDirection, lcDescending llLockScreen = thisform.LockScreen && prevent user from seeing all of the jumping thisform.LockScreen = .t. lnRecno = recno() lnRelativeRow = this.RelativeRow lcDescending = iif( ! plAscending, "descending", "ascending" ) set order to pcOrder &lcDescending this.Refresh() goto lnRecno && move record pointer back this.Refresh() if ( lnRelativeRow != this.RelativeRow ) * the record didn't wind up at the same grid row, so we scroll the grid lnDirection = iif( lnRelativeRow > this.RelativeRow, 0, 1 ) j = abs( lnRelativeRow - this.RelativeRow ) for i = 1 to j this.DoScroll( lnDirection ) endfor this.Refresh() && YAR endif thisform.LockScreen = llLockScreen>Perhaps I asked this question already. There is one annoying behavior of the grid, which I need to overcome. When I click on the column's header, I'm re-ordering on that field and I'm still on the same record. Is where a way to avoid scrolling up or down of the grid? E.g. grid should remain with the same amount of records before the selected record and after it?