PUBLIC oForm oForm = CREAT([oMyForm]) oForm.SHOW DEFINE CLASS oMyForm AS FORM WIDTH = 500 ADD OBJECT oBottomGrid AS oMyBottomGrid WITH ; TOP = 25, ; LEFT = 25, ; WIDTH = 420 ADD OBJECT oTopGrid AS oMyTopGrid WITH ; TOP = 25, ; LEFT = 25, ; WIDTH = 197, ; HEIGHT = 180, ; SCROLLBARS = 0 ADD OBJECT oPaintForm AS oMyTimer PROC INIT LOCKSCREEN = .T. THIS.oBottomGrid.DOSCROLL(5) THIS.oBottomGrid.DOSCROLL(4) LOCKSCREEN = .F. THIS.REFRESH THIS.CLICK ENDPROC ENDDEFINE DEFINE CLASS oMyBottomGrid AS GRID RECORDSOURCE = [labels.dbf] RECORDSOURCETYPE = 0 PROC SCROLLED LPARAMETERS nDirection THISFORM.LOCKSCREEN = .F. THISFORM.oTopGrid.ZORDER(0) THISFORM.LOCKSCREEN = .T. THISFORM.PAINT THISFORM.REFRESH ENDPROC PROC INIT THIS.SETALL([Width], 50, [Column]) ENDPROC ENDDEFINE DEFINE CLASS oMyTopGrid AS GRID RECORDSOURCE = [labels.dbf] RECORDSOURCETYPE = 0 PROC INIT THIS.SETALL([Width], 50, [Column]) ENDPROC ENDDEFINE DEFINE CLASS oMyTimer AS TIMER INTERVAL = 100 PROC TIMER THISFORM.LOCKSCREEN = .F. THIS.ENABLED = .F. ENDPROC ENDDEFINEBut I don't really think its a good user interface, especailly with the amount of columns you're suggesting, it just takes up space. Maybe one option is to have textboxes display the data off grid for the current row? Or maybe put it in the caption of the form?