*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 ) lnTotWidth = 0 For ix = 1 to thisform.lockcount lnTotWidth = lnTotWidth + .Columns(ix).Width + lnGridLineWidth Endfor .Partition = lnTotWidth + iif(.GridLines < 2, 4, .GridLineWidth ) + ; lnVertScrollWidth + ; max(lnRecAndDelMarkWidth, 1) .ActivateCell(1,thisform.lockcount+1) && Setfocus to 2nd panel Do while .LeftColumn<thisform.lockcount+1 .DoScroll(5) && Scroll right Enddo Endwith * Grid.BeforeRowColChange Lparameters nColIndex With this Do case Case inlist(lastkey(),9,4,2) && Right If .Panel = 0 and this.Columns(nColIndex).ColumnOrder = thisform.lockcount Nodefault .Columns(1).Setfocus() .Panel = 1 .Columns(thisform.lockcount+1).Setfocus() Endif If .Panel = 1 and .Columns(nColIndex).Columnorder=.ColumnCount Nodefault .Columns(thisform.lockcount+1).Setfocus() .Panel = 0 .Columns(1).Setfocus() Endif Case inlist(lastkey(),15,19,26) && Left If .Panel = 0 If .Columns(nColIndex).Columnorder=1 Nodefault .Panel = 1 .Columns(.Columncount).Setfocus() Endif Endif If .Panel = 1 and .Columns(nColIndex).Columnorder=thisform.lockcount+1 Nodefault .Panel = 0 .Columns(thisform.lockcount).Setfocus() Endif Otherwise Endcase EndwithCetin