PDA

Ver la Versión Completa : Key Escape


scooterjgm
05-11-2004, 17:19:12
Alguien sabe como puedo mandar una pulsación de la tecla ESCAPE sin que el usuario la tenga que presionar??


Lo necesito para no marear al usuario cuando meta un dato erróneo ;)

frudolph
05-11-2004, 17:40:18
Prueba con lo siguiente código para lanzar la tecla "ESC":

--> SendMessage(Self.Handle, WM_KEYDOWN, VK_ESCAPE, 0);

Puedes reemplazar "Self" por el objeto al cual le quieres enviar el código de escape (tecla).

Luego, en el evento "OnKeyDown" del objeto que debe tomar la tecla escape escribe lo siguiente (ajústalo a tu caso):

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if Key = VK_ESCAPE then showmessage('ok');
// Puedes usar "case" en lugar de "if"
end;

scooterjgm
24-11-2004, 11:56:10
Eso no me funciona bien. Entra en un bucle. necesito lanzar la tecla escape en el evento onValidate.

roman
24-11-2004, 16:40:18
Pero si no quieres marear al usuario ¿por qué no empiezas evitando que salga un mensaje que tenga que cancelar en lugar de cancelarlo tú mismo?

// Saludos

ASAPLTDA
07-04-2005, 22:59:24
hola fudolph
Mi problema es que debo simular la digitacion de un taclado desde una aplicacion delphi para digitar en otro programa, tienes alguna otra idea el otro programa es una emulacion telnet que se conecta a un equipo unix

Alfredo
07-04-2005, 23:24:08
Puedes simularlo usando este codigo:


keybd_event( VK_ESCAPE,0,KEYEVENTF_EXTENDEDKEY, 0);
keybd_event( VK_ESCAPE,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);


si quieres probarlo pega un boton y asignale este codigo en el evento KeyPress del form y en la propiedad KeyPreview debes cambiar a True.


procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #27 then showmessage('pulso escape');
end;


Bien,