Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-11-2010
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 326
Poder: 9
novato_erick Va por buen camino
teclado numerico virtual

Hola chicos:

Estoy realizando un formulario que simule una caja registradora necesito saber precisamente como podria hacer que un Button al apretarlo en una pantalla tactil o con el mouse tenga el mismo valor que el teclado numerico.


Saludos;
Responder Con Cita
  #2  
Antiguo 04-11-2010
Avatar de Ferrari
Ferrari Ferrari is offline
Miembro
NULL
 
Registrado: jun 2006
Ubicación: Torreón, México
Posts: 147
Poder: 13
Ferrari Va por buen camino
Lightbulb Version Delphi

Con que version de delphi estas trabajando...pork en delphi 2010 ya cuentas con un teclado virtual...salu2
Responder Con Cita
  #3  
Antiguo 04-11-2010
Avatar de Enan0
Enan0 Enan0 is offline
Miembro
NULL
 
Registrado: may 2004
Ubicación: Argentina
Posts: 565
Poder: 16
Enan0 Va por buen camino
No Seria tan complicado Lo que tenes que hacer.
Pones un TEXT.Box
en el evento OnKeyPress

Capturas ese valor y te fijas el Char que envia (podes convertirlo a EXA y tenes el Valor de la tecla).

Luego en cada Boton de tu teclado Virutal, asignas el valor que queres ante el evento on Click

saludos
Responder Con Cita
  #4  
Antiguo 04-11-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.198
Poder: 31
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola novato_erik.

En realidad, el TButton no va poder tomar el valor de la tecla pulsada. Vas a tener que utilizar una variable
de tipo Word, que almacene el valor de la tecla que representa el TButton que ha sido pulsado.

Para asignar el valor te puede orientar la ayuda de Delphi. Busca : Virtual Key codes, son mnemónicos que
representan códigos generados por el teclado extendido. ( como es el caso de las teclas del del NumPad )
Normalmente se evalúan en el evento OnKeyDown, ya que este pasa por referencia la variable Key como una palabra.

Saludos.

Última edición por ecfisa fecha: 04-11-2010 a las 10:52:09.
Responder Con Cita
  #5  
Antiguo 05-11-2010
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 326
Poder: 9
novato_erick Va por buen camino
Teclado Virtual numerico

En el evento OnKeyDown es en el formulario en en el Button?

Cree ya la variable NumTeclado : Word; {Variable con el tipo word}

tambien le dije que esa variable almacenara el valor de VK_NUMPAD1 que pertenece al Virtual key Codes.

Lo e intentado en el Button con el evento OnKeyDown y nada...

Saludos;
Responder Con Cita
  #6  
Antiguo 05-11-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.198
Poder: 31
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

No no, en el TButton, tendrías que hacer algo como:
Código Delphi [-]
procedure TForm1.btNumPad0Click(Sender: TObject);
begin
  NumTeclado:= VK_NUMPAD0;
end;

Con respecto a la captura de la tecla quizá te convenga poner a True la propiedad KeyPreview del Form y usar su evento OnKeyDown:
Código Delphi [-]
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case Key of
   VK_NUMPAD0: NumTeclado:= VK_NUMPAD0;
   VK_NUMPAD1: NumTeclado:= VK_NUMPAD1;
   ...
   ...
  end;
end;

Saludos.
Responder Con Cita
  #7  
Antiguo 05-11-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.234
Poder: 10
roman Tiene un aura espectacularroman Tiene un aura espectacular
Yo lo que haría es esto:

Pongo un Edit y diez botones en el formulario. A cada botón le asigno a su propiedad Tag, el numero que le corresponda (0 al botón 0,1 al botón 1, 2 al botón 2, etc.). Luego asigno a todos los botones un mismo evento OnClick así:

Código Delphi [-]
procedure TForm1.ButtonClick(Sender: TObject);
begin
  Edit1.Text := Edit1.Text + Chr(Ord('0') + (Sender as TControl).Tag);
end;

// Saludos
Responder Con Cita
  #8  
Antiguo 05-11-2010
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 326
Poder: 9
novato_erick Va por buen camino
Teclado Virtual numerico

Gracias por tu instantanea respuesta me ayudo mucho estaba utilizando un if (cosa de novato no) olvidandome el Case ajajajajaj... bueno ya realize el codigo sin embargo al ejectutar no escribe en el Edit el numero deseado... tienes alguna idea el porque?

Gracias...
Responder Con Cita
  #9  
Antiguo 05-11-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.198
Poder: 31
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

No había captado la idea de lo que buscabas hacer con los botones...

Revisá el mensaje que te puso roman más arriba, ese código asignado a cada uno de los botones hace lo que buscas.

Saludos.
Responder Con Cita
  #10  
Antiguo 05-11-2010
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 326
Poder: 9
novato_erick Va por buen camino
Teclado Virtual numerico

Si pero ese procedimiento solo seria para un Edit Especifico, es posible que pueda funcionar en cualquier componente de escritura?.


Novato_erick
Responder Con Cita
  #11  
Antiguo 05-11-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.198
Poder: 31
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola erik.

No entiendo bién que es lo que deseas hacer...

Lo normál en una calculadora es que se simule un display, si decidieras usar un TPanel en lugar del TEdit, usando el código de roman, sólo deberías cambiar:
Código Delphi [-]
procedure TForm1.ButtonClick(Sender: TObject);
begin
  Panel1.Caption := Panel.Caption + Chr(Ord('0') + (Sender as TControl).Tag);
end;

Saludos.
Responder Con Cita
  #12  
Antiguo 05-11-2010
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 326
Poder: 9
novato_erick Va por buen camino
Teclado Virtual numerico

Ok en realidad no es calculadora
Es en un formulario de caja por ejemplo (donde se usa un scaner de codigo de barra), luego el siguiente edit es donde pongo las cantidades. y en caso de utilizar el formulario de pagos?

Thank u...
Responder Con Cita
  #13  
Antiguo 05-11-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.198
Poder: 31
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por novato_erick Ver Mensaje
Gracias por tu instantanea respuesta me ayudo mucho estaba utilizando un if (cosa de novato no) olvidandome el Case ajajajajaj... bueno ya realize el codigo sin embargo al ejectutar no escribe en el Edit el numero deseado... tienes alguna idea el porque?

Gracias...
Volvemos atrás entonces... Como te dije antes son caracteres extendidos y por lo tanto no se visualizan como los comunes. Una vez evaluados tendrías que pasarlos a una variable.

Código Delphi [-]
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case Key of
    VK_NUMPAD0: Car:= '0';
    VK_NUMPAD1: Car:= '1';
    ...
  end;
end;

Espero que te haya entendido bién ahora...


Saludos.

Última edición por ecfisa fecha: 05-11-2010 a las 22:03:28.
Responder Con Cita
  #14  
Antiguo 05-11-2010
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 326
Poder: 9
novato_erick Va por buen camino
Dejame ver si te entiendo:
dices mi variable el cual almacena cada caracter es NumTeclado que es de tipo word;

este es mi codigo
Código Delphi [-]
 procedure Tfrmfactura.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case Key of
   VK_NUMPAD0: NumTeclado:= '0';
   VK_NUMPAD1: NumTeclado:= '1';
   VK_NUMPAD2: NumTeclado:= '2';
   VK_NUMPAD3: NumTeclado:= '3';
   VK_NUMPAD4: NumTeclado:= '4';
   VK_NUMPAD5: NumTeclado:= '5';
   VK_NUMPAD6: NumTeclado:= '6';
   VK_NUMPAD7: NumTeclado:= '7';
   VK_NUMPAD8: NumTeclado:= '8';
   VK_NUMPAD9: NumTeclado:= '9';
   end;
end;

y en el Button1 y asi sucesivamente para cada button2, etc.

Código Delphi [-]
procedure Tfrmfactura.Button10Click(Sender: TObject);
begin
 NumTeclado:= VK_NUMPAD0;
end;

me e equivocado en algo porque el compilador me desconce el tipo word y chard.

Gracias por tu ayuda
Responder Con Cita
  #15  
Antiguo 05-11-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.198
Poder: 31
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola erik.

No, la variable NumTeclado no te va a servir. Tendrías que crearte otra de tipo Char para almacenar el caracter a visualizar.
En realidad no sé que uso le dás a NumTeclado. No digo que esté demás, por que podés usarla con otro fin que desconozco...

Saludos.

Última edición por ecfisa fecha: 05-11-2010 a las 23:10:03.
Responder Con Cita
  #16  
Antiguo 06-11-2010
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 326
Poder: 9
novato_erick Va por buen camino
Tengo entendido que necesito almacenar los caracteres en una variable para eso utilizo NumTeclado ahi guarda todos los valores de tipo word sin embargo tambien creo otro con valor de tipo char y aun asi me manda el error.

[DCC Error] factura.pas(231): E2010 Incompatible types: 'Word' and 'Char'

Gracias...
Responder Con Cita
  #17  
Antiguo 06-11-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.198
Poder: 31
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Erick.

Por el tipo de error me atrevo a decir que estas intentando asignar una variable de tipo Word a una de tipo Char.

¿ Podrías poner la parte del código donde asignas el valor de la tecla presionada a la variable tipo Char ?

Seguro que ahí nos damos cuenta lo que sucede.

Saludos.

Última edición por ecfisa fecha: 06-11-2010 a las 00:41:59.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Usas teclado numérico. emii89 Varios 5 12-07-2010 16:48:59
Teclado virtual toni.vi OOP 7 12-03-2009 21:16:41
Bloqueo de mayúsculas y del teclado numérico paldave Varios 2 05-09-2007 05:23:14
activar teclado numérico arrancar xp joanajj Varios 6 11-11-2005 13:13:15
Coma en teclado numérico javiermorales Varios 4 30-07-2003 13:13:41


La franja horaria es GMT +2. Ahora son las 21:08:46.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi