FoxPro/Visual FoxPro - ejemplos de keypress

   
Vista:

ejemplos de keypress

Publicado por Anabella (20 intervenciones) el 05/08/2016 16:13:11
Hola gente! Tengo una duda y no se como resolverla, es algo simple pero no me doy cuenta como resolverlo.
Quiero que pulsando F10 y F11 en cualquier momento de la ejecucion del form y el sistema realice otros eventos.
Donde lo tengo que hacer? En El evento del from?
El sistema es de ventas de mercadería, quiero que cuando el cajero terminó de registrar todas las ventas pulsando F10 imprima un ticket y si pulsa F11 almacene la venta en ctacte.
Desde ya muchas gracias.....
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

ejemplos de keypress

Publicado por Fidel José (321 intervenciones) el 05/08/2016 17:17:22
1) Fijate que F10 es una función reservada por Windows (activa el Menu). Mejor elige otra tecla.
2) Fijate en la ayuda los códigos de teclas en la ayuda de INKEY
1
2
3
4
5
6
7
8
9
10
11
12
13
Key	Alone	SHIFT	CTRL	ALT
F1	28		84		94		104
F2	–1		85		95		105
F3	–2		86		96		106
F4	–3		87		97		107
F5	–4		88		98		108
F6	–5		89		99		109
F7	–6		90		100		110
F8	–7		91		101		111
F9	–8		92		102		112
F10	–9		93		103		113
F11	133		135		137		139
F12	134		136		138		140

Lo mejor es crear un método en el formulario que lance la tarea a realizar
En el evento keypress del form
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
LPARAMETERS nKeyCode, nShiftAltCtrl
DO CASE
	CASE nKeyCode = 133
		* F11
		Thisform.Almacenar_CtaCte()
	CASE nKeyCode = 134
		* F12
		Thisform.Imprmir_Ticket()
	CASE nKeyCode = -4
		* F5
		Thisform.BuscarProducto()
	CASE nKeyCode = -1
		* F2
		Thisform.BuscarCliente()
ENDCASE
En general puede resultar necesario colocar la propiedad KeyPreview = .T.

En este ejemplo muestro como se puede condicionar la ejecución de las teclas al valor de determinadas propiedades del form
(en este ejemplo son todas booleanas)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
LPARAMETERS nKeyCode, nShiftAltCtrl
DO CASE
	CASE nKeyCode = 133
		* F11
		IF Thisform.AllowSave
			Thisform.Almacenar_CtaCte()
		ENDIF
	CASE nKeyCode = 134
		* F12
		IF Thisform.AllowPrint
			Thisform.Imprmir_Ticket()
		ENDIF
	CASE nKeyCode = -4
		* F5
		IF THISFORM.TicketOpen
			Thisform.BuscarProducto()
		ENDIF
	CASE nKeyCode = -1
		* F2
		IF Thisform.TicketOpen
			Thisform.BuscarCliente()
		ENDIF
ENDCASE
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar