DEFINE CLASS grdlock AS grid FontBold = .T. FontSize = 8 DeleteMark = .F. RowHeight = 17 ScrollBars = 0 *-- Number of columns to freeze (lock) on the grid FreezeCols = 0 Name = "grdlock" *-- Set to .T. when exiting the grid GridExit = .F. *-- Setup the panel properties PROCEDURE PanelSetup Local Idx,TotWid THISFORM.LockScreen=.T. If THIS.FreezeCols>0 For Idx=1 to (THIS.FreezeCols) THIS.Partition=THIS.Partition+THIS.Columns(Idx).Width+1 THIS.Columns(Idx).Enabled=.F. If THIS.Columns(Idx).BackColor=RGB(255,255,255) THIS.Columns(Idx).BackColor=THISFORM.BackColor Endif Endfor TotWid=10 For Idx=1 to THIS.ColumnCount TotWid=TotWid+THIS.Columns(Idx).Width+1 Endfor If TotWid < THIS.Width-SYSMETRIC(5) THIS.FreezeCols=0 THIS.Partition=0 Else THIS.PanelLink=.F. THIS.Panel=0 THIS.RecordMark=.T. THIS.Partition=THIS.Partition+10 THIS.ScrollBars=0 THIS.Panel=1 THIS.RecordMark=.F. THIS.PanelLink=.T. Endif Endif For Idx=1 to (THIS.FreezeCols) =THIS.DoScroll(5) Endfor THISFORM.LockScreen=.F. ENDPROC PROCEDURE Scrolled LPARAMETERS nDirection Local Idx If (nDirection=4 OR nDirection=6) AND ; THIS.LeftColumn<=THIS.FreezeCols+1 AND ; THIS.Panel=1 For Idx=THIS.LeftColumn to (THIS.FreezeCols) =THIS.DoScroll(5) Endfor THIS.Refresh() Endif ENDPROC PROCEDURE AfterRowColChange LPARAMETERS nColIndex Local Idx THISFORM.LockScreen=.T. If THIS.Panel=0 If THIS.LeftColumn#1 For Idx=THIS.LeftColumn to 1 Step -1 =THIS.DoScroll(4) Endfor Endif THIS.Panel=1 Keyboard '{TAB}' Else For Idx=THIS.LeftColumn to (THIS.FreezeCols) =THIS.DoScroll(5) Endfor If THIS.Columns(THIS.ActiveColumn).Enabled=.F. Keyboard '{TAB}' Endif THIS.Refresh() Endif THIS.ExitRowCol() THISFORM.LockScreen=.F. ENDPROC PROCEDURE Init THIS.PanelSetup() THIS.SetAll("Resizable", .F., "Column") THIS.SetAll("Movable", .F., "Column") THIS.GridExit=.F. DoDefault() ENDPROC PROCEDURE BeforeRowColChange LPARAMETERS nColIndex If not THIS.GridExit THISFORM.LockScreen=.T. Else THIS.GridExit=.F. Endif ENDPROC PROCEDURE Valid THIS.GridExit=.T. ENDPROC *-- Allows for updating after the row or column changes. PROCEDURE ExitRowCol ENDPROC ENDDEFINE>Scott,