Ver Mensaje Individual
  #2  
Antiguo 17-12-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.114
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

No entiendo bien porqué precisas ambos eventos "OnKeyDown" y "OnKeyPress", pero, entiendo menos aún cómo es que tienes que comprobar "lo mismo" en los dos eventos. ¿No te bastaría con comprobar que se pulsaron las teclas CTRL + ENTER en el evento "OnKeyDown"? A más de que ya ves que en el evento "OnKeyPress" no parece usarse para esos menesteres: no cuenta, como dices, con el parámetro "Shift", por ejemplo. No sé. Tal vez no esté del todo despierto.

Lo que puedo decirte es que no parece bien la sentencia:


Código Delphi [-]
(Shift = [ssCtrl])
Creo que sería más apropiado utilizar algo así:


Código Delphi [-]
procedure TForm1.Edit1KeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  if ( (ssCtrl in Shift) and (Key = VK_RETURN) ) then
  begin
    ShowMessage('Pulsaste las teclas CTRL + ENTER');
    Key := 0;
  end;
end;
Puesto que la variable "Shift" es un "Set" que puede contener varios valores... no sé hasta qué punto podría funcionarte la comprobación que haces arriba, en caso, por ejemplo, de que "Shift" contuviera otros valores, puesto que entonces no sería igual a "ssCtrl", solamente. Sin embargo lo que propongo por mi parte es la comprobación mediante la pregunta "¿Está "ssCtrl" dentro de "Shift"? creo que es más correcto. Además, que no me lo invento yo, creo que la ayuda de Delphi dice algo a este respecto.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita