Ver Mensaje Individual
  #15  
Antiguo 27-05-2014
Avatar de bulc
bulc bulc is offline
Miembro
 
Registrado: jun 2010
Posts: 415
Reputación: 14
bulc Va por buen camino
Key en KeyDown Vs. Key en KeyUp/KeyPress

Cita:
Empezado por ecfisa Ver Mensaje
Hola radenf.

El código que te sugirió Casimiro hace exáctamente lo que deseas. También coincido con él, que el problema pasa por donde estas realizando la captura del evento de teclado.

Para asegurarte que el evento de teclado es capturado correctamente proba de este modo:
Código Delphi [-]
...
procedure El_Form.FormCreate(Sender: TObject);
begin
  // el formulario recibe el evento de teclado antes que el control activo
  KeyPreview := True;  // asignable desde el Object Inspector
end;

procedure El_Form.FormKeyPress(Sender: TObject; var Key: Char);
begin
  // ¿ El control activo es el DBGrid y se presionó una letra ?
  if (ActiveControl = El_DBGrid) and (Upcase(Key) in['A'..'Z']) then
     Tabla_o_Query.Locate('NOMBRE_DEL_CAMPO', Key, [loPartialKeylo, CaseInSensitive]); // posicionar
end;
...

Saludos.
Hola. Tal vez deberíais mencionar que no es lo mismo usar el KeyDown que el KeyPress o el KeyUp. el evento onKeyDown gestiona todas las teclas, pero sólo tiene traducción directa para las teclas Virtual Key con prefijo VK. Tales como VK_RETURN, VK_END, etc. Es us valor Word y por tanto requiere más vueltas para obtener el valor de la tecla cuando es letra o número. En cambio el KeyPress o KeyUp dan el valor ASCII de la tecla. Pongo el link, sobre el tema, que he encontrado: http://delphi.about.com/od/adptips2006/qt/vkey2char.htm
No es tan fácil como pensaba. Saludos.
Responder Con Cita