Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Combobox in Grid - Up/DownArrow ?
Message
De
09/04/2003 08:46:43
 
 
À
23/12/2002 06:19:49
Information générale
Forum:
Visual FoxPro
Catégorie:
Problèmes
Divers
Thread ID:
00735270
Message ID:
00775432
Vues:
11
Hi Marcia,

I found this old code below and it was helpful for my problem as well.
However, When I'm at the bottom line (I have allowaddnew=.T. in the grid)
then I cant get it to add a new line.

Do you by any chance know how to get this to work as well?

Thanks!
Tim

>I assume, then, that this is a drop down list because when you put a drop down combo (style=0) in a grid, the cursor keys behave as you would expect them to.
>
>All you need to do is to add a property to your combo class called lDroppedDown and set it appropriately when the list is droppped ( in the click and the DropDown events ). Add this method ( called handleKey ) to your combo class and call it from the combo's KeyPress:
>
>
>LPARAMETERS nKeyCode
>LOCAL lnMaxRow, 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 grid
>      lnMaxRows = INT( ( .Height - .HeaderHeight - ;
>	IIF( INLIST( .ScrollBars, 1, 3 ), SYSMETRIC( 8 ), 0 ) ) / .RowHeight )
>      *** Move up a row in the grid: up arrow key pressed
>      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, .ActiveColumn )
>        *** Let KeyPress know we have handled the keystroke
>        llRetVal = .T.
>      ELSE
>        *** Move down a row in the grid if the down arrow key is pressed and the
>        *** combo box is closed
>        *** 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, .ActiveColumn )
>	llRetVal = .T.
>        ENDIF
>      ENDIF
>    ENDWITH
>  ENDIF
>ENDWITH
>
>RETURN llRetVal
>
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform