Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Onkeyup me funciona como OnKeyDown (https://www.clubdelphi.com/foros/showthread.php?t=82317)

Waldo 22-02-2013 04:00:22

Onkeyup me funciona como OnKeyDown
 
Buen día para todos, tengo un problema que no logro entender que sucede.

Resulta ser que en la form tengo activado a verdadero en keypreview, pero al presionar la tecla se genera el evento onkeyup, ejecuta ese código sin antes levantar el dedo de la tecla, no entiendo que sucede podría alguien ayudarme.

ecfisa 22-02-2013 04:39:40

Hola Waldo.

La verdad que no escuché ese caso, es de lo más extraño... Sobre todo el que ejecute el evento OnKeyUp sin dejar de presionar la tecla. :confused:

El órden de disparo es OnKeyDown, OnKeyUp, OnKeyPress. Para discriminar si es un problema de teclado o de la aplicación, yo haría una nueva aplicación (un form), pondría nuevamente KeyPreview en True y vería si los eventos se disparan correctamente, mediante un Break o también:
Código Delphi [-]
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  ListBox1.Items.Add('KeyDown')
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  ListBox1.Items.Add('KeyPress')
end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  ListBox1.Items.Add('KeyUp')
end;
Si detectas que el órden no es el correcto tal vez sea un problema físico.

Saludos.

nlsgarcia 23-02-2013 19:44:13

Waldo,

Cita:

Empezado por Waldo
..en la form tengo activado a verdadero en keypreview, pero al presionar la tecla se genera el evento onkeyup, ejecuta ese código sin antes levantar el dedo de la tecla..

El orden secuencial de eventos de teclado es : OnKeydown (Al presionar una tecla), OnKeyPress (Al presionar una tecla con representación ASCII), OnKeyUp (Al liberar una tecla).

Revisa este link:
Cita:

Understanding and Processing Keyboard events in Delphi : OnKeyDown, OnKeyUp and OnKeyPress

http://delphi.about.com/od/objectpas...ard_events.htm
Cita:

Empezado por Delphi Help

Keyboard events are received at several levels:

1- The application level, with an OnMessage event of Application.
You will rarely need to intercept keystrokes at the application level, but it is important to know that this first level is available.

2- The "shortcut-key" level
When you specify a shortcut key, such as those provided as a property of menu items, the keystroke is intercepted before the form sees it.

3- The form level
The form contains a KeyPreview property that enables you to code "global" keystroke events.

4- The component level
When you program key-press event handlers at the component level, the component with focus intercepts the keystroke.

Espero sea útil :)

Nelson.


La franja horaria es GMT +2. Ahora son las 07:47:02.

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