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:
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.
![Wink](http://www.clubdelphi.com/foros/images/smilies/wink.gif)