Agnes,
Can't you just move the focus before the code is run using setfocus.
Mace
>Hi All,
>I have a problem centering the active row in the visible part of a grid.
>
>I use a code similar to
>
>LOCAL;
> lnHeight AS INTEGER,;
> lnRows AS INTEGER,;
> lnLoop AS INTEGER
>
>
>WITH oGrid
> lnHeight = .HEIGHT
> lnRows = ROUND(((lnHeight-.HEADERHEIGHT)/.ROWHEIGHT)/2,0)
> .HEIGHT = .ROWHEIGHT+.HEADERHEIGHT
>
> .REFRESH()
> .HEIGHT = lnHeight
> FOR lnLoop = 1 TO lnRows-1
> .DOSCROLL(0)
> ENDFOR
>ENDWITH
>
>
>this works fine as long as the grid is not in focus. If the grid is in focus and the code beyond is run, the recordpointer will move. This is not easy to trace, because the grid needs to be in focus. I figured out that the change of recordpointer happens in REFRESH(). There is no code in REFRESH() event, I've checked with a plain grid.
>So I put some code in BEFORROWCOLCHANGE to stop moving of RecordPointer if the grid is centering. The movement stops, but then no centering occurs. Same happens if the stop of moving is triggered in textbox VALID()
>
>So I look for a idea to get the thing centered with the record activated before REFRESH()
>
>TIA
>Agnes