Crear en foxpro un formulario que sume con las teclas

Hola, hace unos años que no programo, y no se como hacer un formulario que incremente un numero, eje:

si apretó la tecla "A" incremente "1"

si apretó la tecla "B" incremente a "2" toda esta suma en un textbox..

gracias saludos...

1 Respuesta

Respuesta
1

Novato Help! Gracias por consultar, es un placer. Espero poder ayudarte con tu duda.

Si se puede hacer lo que pides... solo que, en mi humilde opinión, deberías usar mejor una combinación de teclas para generar la suma incremental en el text, por ejemplo

El text inicia con valor = 0. Si apretás Ctrl + a el valor del text incrementa en 1. Si apretás Ctrl + b, el valor incrementa en 2 unidades.

Para eso, necesitas la lista de códigos de la función INKEY()

http://msdn.microsoft.com/es-es/library/cc451013(v=vs.71).aspx

En la columna donde dice CRTL están los códigos de las teclas que se presionan.

Si dejas la tecla sola "a" o "b"... etc... no vas a poder escribir nada en el formulario porque cuando se detecte que se presiona la letra sola "a" se accionara el evento keypress y podrías crear conflictos con la integración de datos. Mientras que con una combinación Ctrl +a... es mas optimo y eficiente.

La cosa va así:

En el formulario, anda a las propiedades del form y en la pestaña "Other" busca la propiedad "KeyPreview" y establecela en .T., con esto, validamos el reconocimiento de teclas para la aplicación.

En el evento KeyPress del form, coloca un código como este:

**--Si presionamos Crtl + a, suma + 1 en el text

IF nKeyCode = 1 &&a

THISFORM.Text1.Value = THISFORM.Text1.Value + 1

ENDIF

**--Si presionamos Ctrl + b, suma +2 en el text

IF nKeyCode = 2 &b

THISFORM.Text1.Value = THISFORM.Text1.Value + 2

ENDIF

**--

**--Y así hasta completar todas las teclas (a-z) que querrás.

En el form, inserta un text con nombre text1 y anda a sus propiedades. Establece la propiedad FORMAT = 9 y la propiedad Value = 0 (en la pestaña DATA) para que el formato sea numérico y el valor de arranque o inicio del control sea 0.

Bien... es una forma practica de hacerlo. Hay otras, imagino, pero esta te puede resolver.

Si en lugar de usar varios IF.. ENDIF quieres resumir un poco, podes usar un DO CASE ... ENDCASE y condicionar todas las pulsaciones de letras que querrás.

Bien.. cualquier cosa, avisame! Estoy a la orden para servirte en lo que pueda con muchísimo gusto.

Saludos!

Desde Managua, Nicaragua!

Ravenn :D :D :D

PD. Si haces una nueva pregunta, entra a la ficha de expertos disponibles de foxpro y buscame como ravenn y ahí me preguntas directamente... o al experto que quieras. L oque pasa es que si colocas la pregunta en el tablón de "preguntas" puede pasar ahí varios días porque queda en el bolsón de preguntas.

XDXDXD

excelente tu respuesta, pero de hecho no voy a escribir nada en el text, solo necesito sumar utilizando exclusivamente una tecla ose "A" o "B"

Se puede???

Si se puede. ¿Pero qué es lo que vas a sumar? Yo te ejemplificaba con un text para que vieras que si funcionaba... ¿pero cómo quieres sumar vos? ¿A través de variables?

Si son variables... un ejemplo practico seria así: en el evento KeyPress del Form coloca esto:

LOCAL lnValorTotal

lnValorTotal = 0

**--Si presionamos Crtl + a, suma + 1 en el text
IF nKeyCode = 1 &&a

lnValorTotal = lnValorTotal + 1

**--Comprobamos que si suma

MESSAGEBOX(lnValorTotal)

ENDIF

Ya luego con el valor de la variable local lnValorTotal podes usar el dato a tu gusto.

Bien... avisame! ESTOY A la orden para cualquier cosa :D :) :) :) . Si esto resuelve tu duda, no olvides finalizar!

Un abrazo!

Desde Managua, Nicaragua!

Ravenn :D :D :D

Excelente respuesta, muy buena de hecho; usare pero solo una variable, lo he hecho pero con un botón en el formulario, pero eso es lo que no quiero en el form, solo quiero mostrar el numero del textbox, ahora bien no quiero ningún botón en el form, solo el dato del textbox, pero deseo que se incremente solo pulsando unas teclas, pero no en combinaciones, sino solas, se puede?

puedes darme un ejemplo, de sumar sin combinaciones?

A por cierto después de esta pregunta te busco directamente, gracias por tu ayuda... saludos desde el Salvador...

Ahh si! Claro, claro... si se puede.

Mira... en tu formulario debes dejar solo el text sin botones.

Te aclaro... imagino que en el formulario solo vas a tener ese control, osea solo estará el text donde se suma. Si hay mas controles de entrada de datos como un editbox u otro textbox, el código de presión para las teclas en solitario (a, b...) sin combinación no te funcionara. ¿Por qué? Porque se dará prioridad a la entrada de datos en el resto de controles y no a la pulsación de las teclas. POR ESO te digo que si vas a usar las teclas en solitario sin combinación, dejes solo el text en el form.

Bien... El text debe tener como propiedades así:
format = 9, value = 0 (están en la pestaña "data" de las propiedades del text.)

Luego, anda a las propiedades del form y establece (en al pestaña other) la propiedad KeyPreview = .T. y en el evento Keypress del formulario (en la pestaña method) coloca un código como este:

**--Si presionamos solo "a"
IF nKeyCode = 97
THISFORM.Text1.Value = THISFORM.Text1.Value + 1
ENDIF
**--Si presionamos solo "b"
IF nKeyCode = 98
THISFORM.Text1.Value = THISFORM.Text1.Value + 2
ENDIF
**--//

Te recuerdo que a través de INKEY() podes ver la lista de códigos asignados a las teclas en solitario o en combinaciones... por si quieres asiginar, mas adelante, otras funciones a otras teclas!

Bien... espero esto te sea útil.

Cualquier cosa, estoy a la orden para servirte.

Ohh somos centroamericanos! :) :) :) Saludos y un abrazo hasta la república hermana de El Salvador.

Desde Managua, Nicaragua!

Ravenn :D :D :D

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas