Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problemas al capturar teclas (https://www.clubdelphi.com/foros/showthread.php?t=25957)

Dexter182 09-10-2005 05:18:57

Problemas al capturar teclas
 
Alguien sabría decirme el porque de que no pueda capturar las teclas
F1 ... F12 en el evento OnKeyPress de un formulario.

Tengo activada la propiedad KeyPreview y he probado varias cosas:

IF Key = #112 then //Si se presione F1
....
IF Key = VK_F1 then
....

pero ninguna me funcionó. Sin embargo, las teclas Enter (#13), Escape (#27),
las capturo sin ningún tipo de problemas.

El código es el siguiente:
Código:

 
  Case Key of
          #13:
                begin
                  Key := #0;
                  //Focus al siguiente objeto
                  Perform(WM_NEXTDLGCTL, 0, 0);
                end;
          #27:
                begin
                  Key := #0;         
                  //Cierra el formulario
                  Close;
                end;
          #112:
                begin
                  Key := #0;
                  //Cambia de página
                  PageControl.TabIndex := 1;
                end;

Si alguien me puede orientar les estaría agradecido.
Un saludo.

dec 09-10-2005 05:43:11

Hola,

La solución pasa por utilizar los eventos "OnKeyUp" u "OnKeyDown". La explicación en la ayuda del evento "OnKeyPress":


Cita:

Empezado por Ayuda de Delphi
Use the OnKeyPress event handler to make something happen as a result of a single character key press.

The Key parameter in the OnKeyPress event handler is of type Char; therefore, the OnKeyPress event registers the ASCII character of the key pressed. Keys that don't correspond to an ASCII Char value (Shift or F1, for example) don't generate an OnKeyPress event. Key combinations (such as Shift+A), generate only one OnKeyPress event (for this example, Shift+A results in a Key value of “A” if Caps Lock is off). To respond to non-ASCII keys or key combinations, use the OnKeyDown or OnKeyUp event handlers.


Dexter182 09-10-2005 22:36:12

Ahora va queriendo
 
OK. A ver si entendí.
La idea sería que use OnKeyUp o OnKeyDown para las teclas F1 ... F12
y lo demás que lo deje en el OnKeyPress.
Digo esto porque intenté pasar todo al OnKeyUp y no me resultó.
Por ejemplo al pulsar Enter (cuando ejecuto Perform(WM_NEXTDLGCTL, 0, 0))
se escucha un pequeño beep.
Antes lo solucionaba con un Key := #0 (Que ahora pasó a ser un Key := 0),
pero ahora no hay caso.
Te pido que me confirmes si estoy en lo cierto.
Desde ya te agradezco tu explicación.
Un saludo.


La franja horaria es GMT +2. Ahora son las 16:12:32.

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