Usar Keypress para bloquear 2 teclas en un Grid

148 views
Skip to first unread message

integral

unread,
Jul 23, 2014, 12:46:07 PM7/23/14
to publice...@googlegroups.com
Estimados Colegas :
 
Estoy trabajando con un Grid configurado como un LISTBOX...
 
Y como una posible solucion a las 2 interrogantes siguientes r...
 
1) Como evitar cuando el usuario se encuentre en dicho control no se vaya mas a la derecha teniendo en cuentas que solo tiene 2 campos el GRID
 
2) Como evitar que se desplaze dentro del GRID hacia abajo cuando selecciona el usuario una opcion de las 3 creadas.
 
Estoy utiliznado el siguente codigo en el evento KEYPRESS pero no funcionan como bloqueo de la techas TAB y ->
 
1)
IF INLIST(nKeyCode,9,19)                              && Tecla Tab y Flecha Derecha
  NODEFAULT
ENDIF
 
2)
IF nKeyCode = 9
  MESSAGEBOX("Atencion : Tecla [TAB] Desactivada.",0+64,"Aviso",600)
  RETURN 0
ENDIF
IF nKeyCode = 19
  MESSAGEBOX("Atencion : Tecla [->] Desactivada.",0+64,"Aviso",600)
  RETURN 0
ENDIF
Agradezco sus comentarios y sugerencias.
 
atte.,
 
INTEGRAL 
 

Fernando D. Bozzo

unread,
Jul 23, 2014, 12:55:49 PM7/23/14
to publice...@googlegroups.com
Hola Integral:

Me pierdo un poco. Si tenés un grid con 2 columnas, ¿cómo hace el usuario para irse más a la derecha de la segunda, si ya no hay más columnas?

En toda interfaz, el usuario debe tener la mayor libertad posible para ir y venir, y trabarlo en una celda o campo para que no pueda salir no suele ser buena idea. Te comento esto porque tiene que ver con buenas prácticas de interfaz y usabilidad.
Puede que te convenga buscar otra alternativa.

Saludos.-

Ricardo Pina

unread,
Jul 23, 2014, 1:14:11 PM7/23/14
to Grupo VFP
Hola

El movimiento a la derecha se lo conteste ayer en otro hilo.
Se le va de pantalla la primer columna por que no tiene bien definido el ancho del grid.
El segundo punto no entendi bien a que se refiere.

Saludos
--
            

                   Ricardo Pina

Desarrollo y Servicios Informáticos

                  Profesionales
               www.dsip.com.ar

 

 

Fernando D. Bozzo

unread,
Jul 23, 2014, 1:16:27 PM7/23/14
to publice...@googlegroups.com
Ah, me pareció que le habías respondido Ricardo, pero no creí que fuera así de básico el problema :-)

Lo que no entiendo entonces es porqué lo preguntó otra vez...


Ricardo Pina

unread,
Jul 23, 2014, 1:20:10 PM7/23/14
to Grupo VFP
Yo tampoco, ni siguió el hilo original para saber si me equivoqué y no era eso o no entendió lo que puse.
esperemos que aclare ambos puntos



Fernando D. Bozzo

unread,
Jul 23, 2014, 1:20:39 PM7/23/14
to publice...@googlegroups.com
El problema del cross-posting...

integral

unread,
Jul 23, 2014, 1:29:04 PM7/23/14
to publice...@googlegroups.com
Estimados Amigos :
 
Nuevamente adjunto 2 imagenes que ilustran el problema :
 
Deseo hacer lo siguiente :
 
El GRID solo tiene 3 opciones cada una con su respectivo CheckBox, la idea es que se quede fijo de alguna forma los items y no se desplaze a la derecha o bajen un item con la flecha y es ahi cuando no se aprecia como estaba el GRID inicialmente con sus 3 opciones...(2da. Imagen)
 
Posible Solucion :
 
1) Bloquear las 2 teclas que mueven los items (TAB y ->)
2) o talvez inmovilizar alguna columna para evitar dichos desplazamientos
 
Inicialmente estuve utilizando un control LISTBOX pero el problkema era como hacer para grabar el Checkbox seleccionado en la tabla corrrspondiente por ello cambien por un GRID y lo configure lo mas parecido a un GRID
 
Espero haberme explicado bien...
 
atte.,
 
INTEGRAL
Cambio.jpg
Corregir.jpg

Fernando D. Bozzo

unread,
Jul 23, 2014, 1:33:10 PM7/23/14
to publice...@googlegroups.com
Integral, lo que no contestás es lo que te hemos preguntado, entre otras cosas, ¿no te sirvió la respuesta de Ricardo?

Cuando te dan soluciones, lo que se espera es que contestes a las mismas indicando si las aplicaste, cómo y si te sirvió o no.

Postear muchas veces lo mismo, no sirve de nada y deja a quienes te dan respuesta con la sensación de que no las has leído.

Víctor Hugo Espínola Domínguez

unread,
Jul 23, 2014, 1:39:08 PM7/23/14
to publice...@googlegroups.com
Hola Integral

La respuesta que te dio Ricardo soluciona ambos problemas, mira el gráfico adjunto.

Saludos,
Víctor.
Lambaré - Paraguay.
 
Grid.png

Antonio.xt

unread,
Jul 23, 2014, 2:26:41 PM7/23/14
to publice...@googlegroups.com

Caray, si que esta un poco confuso, tal vez por eso las soluciones no han sido las adecuadas, o simplemente no las ha revisado el colega.

A ver si le atino a la interrogante 1:
1) Como evitar cuando el usuario se encuentre en dicho control no se vaya mas a la derecha teniendo en cuentas que solo tiene 2 campos el GRID

Si tienes un Grid con 2 columnas, y la primera es el CheckBox, pues si no quieres que se desplace por la segunda columna incluye en el WHEN del Text de esa columna un RETURN .F.

La segunda interrogante no le entiendo.
No quieres que se desplace para abajo si ya selecciono una opcion; pero que pasa si quiere cambiar de opcion y necesita seleccionar una que esta mas abajo de las primeras 3?


integral

unread,
Jul 23, 2014, 3:04:15 PM7/23/14
to publice...@googlegroups.com
Amigo Ricardo :
 
Te comento quie si realize lo que me indicastes, pero la solucion fue a medias...
al usuario al usar TAB ó  --> se desplaza a la derecha ocasioando que la columna del CheckBox ya no se visualiza (Ver imagen adjunta)
 
Ademas si solo 3 opciones que estan definidas solo deseo que se desplacen en dichas opciones y el GRID no baje una linea mas que claro al no existir queda en blanco...(En el Combobox exite un evento que nos permite indicar cuantos item queremos mostrar algo asi deseo hacer co nel GRID.
 
atte.,
 
INTEGRAL  

El miércoles, 23 de julio de 2014 11:46:07 UTC-5, integral escribió:
Corregir.jpg

Víctor Hugo Espínola Domínguez

unread,
Jul 23, 2014, 3:13:10 PM7/23/14
to publice...@googlegroups.com
Hola Integral

Envíanos una imagen del diseño del grid, tal parece que no estás entendiendo lo que te decimos Ricardo y yo.

Saludos,
Víctor.
Lambaré - Paraguay.
 

Antonio.xt

unread,
Jul 23, 2014, 3:23:54 PM7/23/14
to publice...@googlegroups.com

Ah Ok, entonces si es como te indico el colega Ricardo, haz un poco mas largo el Grid, ademas debes darle a las 2 columnas un ancho fijo tambien, en este caso tienes que hacer pruebas hasta que la columan del checkbox no desaparezca; y si ademas de eso, no quieres que el usuario se desplace a la segunda columna, hazle como te digo, incluye RETURN .F. en el evento WHEN del Text de la columna 2.

Mario López

unread,
Jul 23, 2014, 4:34:23 PM7/23/14
to publice...@googlegroups.com
@Integral: igualmente, si lo único que querés es un listbox con selección múltiple no es difícil de hacer, solamente hay que usar la propiedad Picture del ListBox como un array, hay varios ejemplos online, fijate uno en:

http://www.tek-tips.com/faqs.cfm?fid=3911

HTH
Mario
---

Fidel Charny

unread,
Jul 23, 2014, 5:23:02 PM7/23/14
to publice...@googlegroups.com
Sobre el ancho de un control grid, yo uso lo siguiente:
* Ejemplo: Width_grid( thisform.grdEmployed , 15 , 6 )

PROCEDURE width_grid
LPARAMETERS toGrid
, tnRows , tnColumns
*
* ToGrid         » Referencia al objeto Grid
* tnRows         » Cantidad de Filas que mostrará
* tnColumns     » Cantidad de Columnas que se muestran (o todas)

*
#DEFINE _BARS_WIDTH        20
#DEFINE _MARK_WIDTH        10
tnColumns
=EVL(tnColumns,toGrid.ColumnCount)
IF
!BETWEEN(tnColumns,1,togrid.Columncount)
    tnColumns
=toGrid.ColumnCount
ENDIF
tnRows
=EVL(tnRows,10)
LOCAL i
,lnSumWidth

WITH toGrid
    lnSumWidth
= tnColumns ;
       
+ IIF(.recordmark,_MARK_WIDTH,1) ;
       
+ IIF(.scrollbars>1,_BARS_WIDTH , 4 )
       
    FOR i
=1 TO tnColumns
        lnSumWidth
=lnSumWidth + .Columns(i).width
    NEXT
   
   
.Width=lnSumWidth
   
.Height=.headerHeight + tnRows * .rowheight ;
       
+ IIF(INLIST(.scrollbars,1,3) ,_BARS_WIDTH , 0 )
ENDWITH
ENDPROC

Ricardo Pina

unread,
Jul 23, 2014, 6:33:11 PM7/23/14
to Grupo VFP
Hola Integral

Para evitar desplazamiento hacia la derecha eel ancho de la grilla debe ser mayor a la suma de los anchos de las 2 columnas ( si como en la figura tienes el scrollbar debes sumar tambien ese ancho para el ancho de la grilla)
Para evitar el desplazamiento hacia abajo debes tener el scrollbar de la grilla en 0 ( ninguno)

Saludos

integral

unread,
Jul 23, 2014, 8:20:17 PM7/23/14
to publice...@googlegroups.com
 
Gracias amigos por sus comentarios, Resolvi el problema con vuestras sugerencias...
 
Saludos,
 
INTEGRAL

El miércoles, 23 de julio de 2014 11:46:07 UTC-5, integral escribió:
Reply all
Reply to author
Forward
0 new messages