Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Usas teclado numérico. (https://www.clubdelphi.com/foros/showthread.php?t=68827)

emii89 08-07-2010 18:18:53

Usas teclado numérico.
 
Gente, diseñé una calculadora y quiero que al apretar el teclado numérico, se presionen los botones de la calculadora. Se que es en el evento "on key press" pero no se como definirlo. Alguien podría ayudarme?

ecfisa 08-07-2010 22:20:37

Hola emii89.

Te conviene usar el evento OnKeyDown y usar un case para evaluar la tecla presionada:

Código:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; 
Shift: TShiftState);
begin
  case Key of
    VK_NUMPAD0: { tecla 0 del teclado numérico }
    VK_NUMPAD1: { tecla 1 del teclado numérico}
    ...
    VK_NUMPAD9: { tecla 9 del teclado numérico }
    VK_ADD          { '+' del tec. numérico }
    ...
  end;
end;

Los códigos "VK_.." , los tenés en la ayuda de Delphi. Sólo tenes que poner VK_ en la busqueda del help.

En ejemplo usé el evento OnKeyDown del Form por que no especificas quién es el que debe disparar el evento.

Saludos.

Caro 08-07-2010 22:45:47

Hola emi89, añadiendo a lo que dice ecfisa, debes poner a True la propiedad KeyPreview de tu formulario y para que se ejecute lo que tienes en tus Bontones:

Código Delphi [-]
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;  
Shift: TShiftState);
begin
   case Key of
     VK_NUMPAD1: Button1.Click;
     VK_NUMPAD2: Button2.Click;
     VK_NUMPAD3: Button3.Click;
     VK_NUMPAD4: Button4.Click;
     ..........................
   end;
end;

Saluditos

Faust 08-07-2010 22:52:37

Como una duda un poco relacionada... con estos métodos ¿en el formulario se visualiza la presión del control button?

ecfisa 10-07-2010 11:45:54

Hola Faust.

Si te referís a que el botón baje y suba como si se hubiera realizado un click con el mouse, no.

Pero se puede escribir algo de código para hacerlo:

Código:

procedure TForm1.HacerClick(Sender: TButton);
begin
  with (Sender as TButton) do
  begin
    Perform(WM_LBUTTONDOWN, MK_LBUTTON,0);
    Sleep(250);  // un poco de espera para que se note...
    Perform(WM_LBUTTONUP, MK_LBUTTON,0);
  end;
end;

Y utilizarlo así :
Código:

....
  case Key of
    VK_NUMPAD0: HacerClick(Button0);
    VK_NUMPAD1: HacerClick(Button1);
  end;
...

HacerClick, dispara el evento OnClick del ButtonX, como si se hubiese pulsado sobre él.

Saludos.

Faust 12-07-2010 16:48:59

Oh si, eso me hubiera servido hace un par de años, pero tomo nota para futuras aplicaciones... gracias ecfisa ;)


La franja horaria es GMT +2. Ahora son las 20:45:35.

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