Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-10-2005
Avatar de Dexter182
Dexter182 Dexter182 is offline
Miembro
 
Registrado: jul 2005
Ubicación: Argentina
Posts: 95
Poder: 19
Dexter182 Va por buen camino
Unhappy 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.
Responder Con Cita
  #2  
Antiguo 09-10-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
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.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 09-10-2005
Avatar de Dexter182
Dexter182 Dexter182 is offline
Miembro
 
Registrado: jul 2005
Ubicación: Argentina
Posts: 95
Poder: 19
Dexter182 Va por buen camino
Thumbs up 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.
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 15:18:21.


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
Copyright 1996-2007 Club Delphi