* Grid.Init With this lnVertScrollWidth = iif(.ScrollBars < 2, 0, sysmetric(5) ) lnRecAndDelMarkWidth = ( iif(.DeleteMark,0.6,0) + ; iif(.RecordMark,0.6,0) ) * lnVertScrollWidth lnGridLineWidth = iif(.GridLines < 2, 0, .GridLineWidth ) .AddProperty("lInPanelChange") .Partition = .Columns(1).Width + ; lnVertScrollWidth + ; lnRecAndDelMarkWidth + ; lnGridLineWidth .ActivateCell(1,2) && Setfocus to 2nd col .DoScroll(7) && Scroll page right Endwith * Grid.BRCC Lparameters nColIndex With this If .Panel = 0 and !.lInPanelChange .Panel = 1 Endif If .Panel = 1 and ( ; ( nColIndex=.ColumnCount and lastkey() = 9 ) ; or ; ( nColIndex=2 and lastkey() = 15 ) ) .Panel = 0 Endif Endwith *Grid.ARCC Lparameters nColIndex With this If .Panel = 0 .lInPanelChange = .t. .Panel = 1 .Columns(2).SetFocus() .Panel = 0 .Columns(1).SetFocus() .lInPanelChange = .f. Endif EndwithThis is VFP6 code. If VFP3-5 then you should add lInChangePanel property to grid or form or use a memvar instead. This could be enhanced to be dynamic and get locked column count from a property. Also I just wrote it for a standart grid where ColumnOrders are not tampered with ( and would bomb to work properly as soon as you move columns manually - because there are hardcoded columns() there ) . Enhancing it "is left to the user" :)