FoxPro/Visual FoxPro - Programacion de Teclas de Funcion

   
Vista:

Programacion de Teclas de Funcion

Publicado por chente (70 intervenciones) el 06/09/2013 03:17:50
Saludos...tengo un formulario en donde en el When de un Cuadro de texto defino:
ON KEY LABEL CTRL+F1 THISFORM.Text23.Value='TFUNCION1'
ON KEY LABEL CTRL+F2 THISFORM.Text23.Value='TFUNCION2'
ON KEY LABEL CTRL+F3 THISFORM.Text23.Value='TFUNCION3'

con la finalidad de que al pulsar las teclas de función y dependiendo de la tecla pulsada: coloque códigos en el cuadro de Texto,
Al ejecutar el programa me manda el siguiente error:

THISFORM can only be used within a method

y me marca la instrucción READ EVENTS del programa principal (.PRG)

que puedo hacer para que funcionen mis teclas de función sin que marque este error?
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
Imágen de perfil de Mauricio

Programacion de Teclas de Funcion

Publicado por Mauricio (1368 intervenciones) el 06/09/2013 14:07:11
Init:
ON KEY LABEL CTRL+F1 THISFORM.Text23.Value='TFUNCION1'
ON KEY LABEL CTRL+F2 THISFORM.Text23.Value='TFUNCION2'
ON KEY LABEL CTRL+F3 THISFORM.Text23.Value='TFUNCION3'
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

Programacion de Teclas de Funcion

Publicado por Fidel (558 intervenciones) el 06/09/2013 14:43:57
Es mejor utilizar el evento KeyPress, ya sea de un textbox o, incluso, del formulario, según la necesidad. Mira la ayuda de KeyPress y Inkey()
Para un TextBox:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
LPARAMETERS nKeyCode, nShiftAltCtrl
*MESSAGEBOX("nShift="+TRANSFORM(nShiftAltCtrl)+CHR(13);
*	+"nKeyCode="+TRANSFORM(nKeyCode))
IF nShiftAltCtrl=2
	DO case
		CASE nkeyCode=94	&& F1
			this.Value="Presionó Tecla Función [Ctrl+F1]"
		CASE nKeyCode=95	&& F2
 
			this.Value="Presionó Tecla Función [Ctrl+F2]"
		CASE nKeyCode=96	&& F3
			this.Value="Presionó Tecla Función [Ctrl+F3]"
	ENDCASE
ENDIF
 
* Alternativamente, para un tratamiento más general.
LPARAMETERS nKeyCode, nShiftAltCtrl
 
IF nShiftAltCtrl=2.and.Between(nKeyCode,94,96)
        Thisform.GetFunc(1000*nShiftAltCtrl + nKeyCode , this)
ENDIF
 
&& Metodo del form llamado "GetFunc"
LPARAMETERS xnTecla , xoObjeto
DO case
	CASE xnTecla=2094
		xoObjeto.Value="Valor, return de función o Proc Para Ctrl+F1"
	CASE xnTecla=2095
		xoObjeto.Value="Valor, return de Función o Proc para Ctrl+F2"
	CASE xnTecla=2096
		xoObjeto.value="Valor, return de Func. para Ctrl+F3"
 
	CASE xnTecla=1084
		xoObjeto.Value="Valor, return de función o Proc Para shift+F1"
	CASE xnTecla=1085
		xoObjeto.Value="Valor, return de Función o Proc para Shift+F2"
	CASE xnTecla=1086
		xoObjeto.value="Valor, return de Func. para Shift+F3"
 
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