*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") lnTotWidth = 0 for ix = 1 to thisform.lockcount lnTotWidth = lnTotWidth + .Columns(ix).Width + lnGridLineWidth endfor .Partition = lnTotWidth + lnGridLineWidth + ; lnVertScrollWidth + ; lnRecAndDelMarkWidth .ActivateCell(1,thisform.lockcount+1) && Setfocus to 2nd col .DoScroll(7) && Scroll page right Endwith *grid.beforerowcolchange LPARAMETERS nColIndex With this do case case inlist(lastkey(),9,4,2) 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 .Columns(thisform.Lockcount+1).Setfocus() .Panel = 0 .Columns(1).Setfocus() endif case inlist(lastkey(),15,19,26) If .Panel = 0 and .Columns(nColIndex).Columnorder=1 .Columns(1).Setfocus() .Panel = 1 .Columns(.Columncount).Setfocus() Endif If .Panel = 1 and .Columns(nColIndex).Columnorder=thisform.Lockcount+1 .Columns(thisform.Lockcount+1).Setfocus() .Panel = 0 .Columns(thisform.Lockcount).Setfocus() Endif otherwise endcase EndwithForm.lockcount property custom.
*Grid.Afterrowcolchange LPARAMETERS nColIndex for ix=1 to nLockCount this.columns(ix).Columnorder = this.Leftcolumn+(ix-1) endforCetin