Teclas aceleradoras para llevar el foco a una rejilla

vForum público de la plataforma de desarrollo Velneo

Moderador: vCoaches

Responder
fermin
vMate
vMate
Mensajes: 54
Registrado: 02 May 2006, 11:17

Teclas aceleradoras para llevar el foco a una rejilla

Mensaje por fermin » 30 Abr 2007, 17:32

Estoy haciendo una pequeña aplicación para un ordenador que tiene un tpv donde no utilizan el ratón. Tengo un menú tipo formulario que entre los varios controles, tiene una rejilla y un casillero. Para poder seguir manteniendo la filosofía de ese ordenador necesito poder llevar el foco al casillero o a la rejilla indistintamente con alguna tecla aceleradora.

¿ Algún truco o astucia para poder hacerlo?

SJover
vMate
vMate
Mensajes: 30
Registrado: 28 Abr 2007, 22:18
Ubicación: Alicante (Esoaña)
Contactar:

Re:Teclas aceleradoras para llevar el foco a una rejilla

Mensaje por SJover » 12 Jul 2007, 22:13

Hola Fermin:
Creo que sería conveniente que te lo replantearas ya que precisamente los menus tipo formulario, por sus caracteristicas, no facilitan el control del foco sobre los controles (valga la redundancia) :-)
Que yo sepa solo los "botones" (los controles dibujo) permiten asignar un acelerador del teclado y si tienes muchos controles sobre el form, no tienes forma de alterar el ciclo del orden establecido para enfocar con el tabulador.
Estos menús trabajan bastante bien con raton.

En mi caso, he hecho una modificación sobre el tpv para que trabaje con un lector de codigo de barras y al principio he tenido problemas similares a los que planteas. Y tambien los he solucionado con un poco de imaginación. Por eso te digo que quizás puedas planteartelo de otra forma. En mi caso el lector de c. barras ha ido bastante bien.

Avatar de Usuario
Fran
vCoach
vCoach
Mensajes: 6599
Registrado: 21 Sep 2005, 08:23
Ubicación: Madrid (España)
Contactar:

Mensaje por Fran » 12 Jul 2007, 22:39

Buenas noches:

Se me ocurre una posible solución que he empleado en varias ocasiones en formularios, pero nunca en menús formulario:

- Pegas dibujos al menú, lo más pequeños posible.
- Los colocas justo antes de la rejilla y del casillero en el orden tab.
- Creas un proceso que genere una pulsación del tabulador utilizando la función keybd_event de user32.dll y se lo asignas a los dibujos anteriores.

Es este hilo:

http://forum.velneo.com/es/viewtopic.ph ... keybdevent

Publiqué una URL donde puedes consultar los códigos a utilizar con esta función para generar las distintas pulsaciones de teclas.

- Asignas una tecla aceleradora a cada dibujo. P.ej, F11 al que está antes de la rejilla y F12 al que está antes del casillero. Luego pegas textos en el menú donde digas F11 = Rejilla o algo así.

Al pulsar F11, se dispara el proceso asociado al dibujo. Este proceso genera una pulsación de la tecla tab, lo cual pasa el foco al siguiente control en el orden de tabulación, que es la rejilla.
Lo mismo sucedecería con el casillero.

Ya digo que no lo he probado en menús, pero en formularios funciona bien.
Un saludo,

Francisco Javier Pérez Novo
EfeUno Consultores de Gestión y Software, S.L.
fjpnovo@efeuno.org
http://www.efeuno.org
(+34) 91 519 44 86
Skype: Fran-EfeUno

Google Maps:
40.447943147972445, -3.6719655990600586

SJover
vMate
vMate
Mensajes: 30
Registrado: 28 Abr 2007, 22:18
Ubicación: Alicante (Esoaña)
Contactar:

Teclas aceleradoras para llevar el foco a una rejilla

Mensaje por SJover » 13 Jul 2007, 12:26

Hola a todos:

Me ha parecido interesante el enlace, Fran. Creo que podría funcionar como comentas (aunque no lo he probado tampoco).
Sin embargo, te lo comento por si puede dar una idea, si que hice varias pruebas hace unos días para intentar provocar (mediante el enter) el salto de foco desde un casilla de edición en el formulario de menú.
Me explico: Lo intenté mediante el api de windows, con un gancho de teclado y capturando la pulsacion de la tecla enter. Una vez capturada, enviaba mediante keybd_event la simulacion de la tecla tab. para que hiciera saltar el foco. Esto provocaba que el foco saltara dos veces (pienso que una vez para la presión de la tecla y otra al evento key_up que se produce al soltarla)
Lo dejé en ese punto pues no podia entrenerme mas.

En la modificaciones del tpv para codigo de barras, el lector enviaba una pulsacion de fin tras el codigo. No tuve problema ya que asigne al proceso de lectura de la casilla de edición el acelerador de teclado (return) y funcionó correctamente. No mi hizo falta el invento que he comentado en lineas anteriores.
Un saludo y perdón por el rollo
Salvador

Responder