>IF This.HandleKey( nKeyCode ) > NODEFAULT >ENDIF >>
>LPARAMETERS nKeyCode >LOCAL lnMaxRows, llRetVal > >WITH This > *** If escape or enter pressed, the list is not dropped down anymore > IF nKeyCode = 27 OR nKeyCode = 13 > .lDroppedDown = .F. > ENDIF > *** If the list is not dropped down, traverse the grid with cursor keys > IF !.lDroppedDown > WITH .Parent.Parent > *** Calculate the maximum number of rows in the visible portion of the grid > lnMaxRows = INT( ( .Height - .HeaderHeight - ; > IIF( INLIST( .ScrollBars, 1, 3 ), SYSMETRIC( 8 ), 0 ) ) / .RowHeight ) > *** Move up a row in the grid > IF nKeyCode = 5 THEN > *** If we are sitting on the top row in the visible portion of the grid, > *** Scroll the grid up a row in case there is a previous record > IF .RelativeRow = 1 > .DoScroll( 0 ) > ENDIF > .ActivateCell( .RelativeRow - 1, .RelativeColumn ) > *** Let KeyPress know we have handled the keystroke > llRetVal = .T. > ELSE > *** If we are sitting on the bottom row in the visible portion of the grid, > *** Scroll the grid down a row in case there is a next record > IF nKeyCode = 24 THEN > IF .RelativeRow >= lnMaxRows > .DoScroll( 1 ) > ENDIF > .ActivateCell( .RelativeRow + 1, .RelativeColumn ) > llRetVal = .T. > ENDIF > ENDIF > ENDWITH > ENDIF >ENDWITH > >RETURN llRetVal >