![]() |
Lanzar evento Keydown sin apretar la tecla (no, no es telekinesis)
Quiero ver como puedo hacerlo, para lanzar lo que seria un evento de OnKeyDown, ya definido en otra parte del codigo, desde otra funcion.
Algo asi como: (Y ante todos ustedes, mi primer esquema de DELPHI)
¿Me he explicado? |
En lugar de "tocar" tenas de eventos, te recomiendo lo siguiente:
Pasa el código que ejecutas cuando pulsas el F5 a un procedimiento aparte En el onkeydown, si pulsan F5 llamas a este procedimiento Y en la función que comentas, pues también llamas a este procedimiento Espero que te sirva. Edu |
No me interesa lanzar procesos a parte para presionar las teclas, ya lo tengo todo muy claro y limpio, como para hacer procesos a parte.
¿Tan complicado es decirle al programa "Haz como si pulsara F5, chavalote" y dejar que haga lo que le toca? De todas formas, gracias por la respuesta, siempre es un detalle que la gente responda tan rapido. |
Si en tu evento tienes algo "parecido" a esto:
para simular la tecla puedes usar PostMessage:
|
Mi evento apretando F5 es exactamente este:
El otro evento que tendria que lanzar una orden como si apretara F5 seria este:
Dicho queda. Sobre lo que tu me dices, aun me suena a chino, soy un pez aun. |
Cuestión de gustos. A mi me parece incluso más limpio con un simple procedimiento que creando mensajes de teclado, pero bueno, funciona de las dos formas!
Un saludo Edu |
Cita:
|
CopyPasteado. ¿Me puedes explicar que es lo que he hecho? Retengo mejor las cosas cuando las entiendo.
Gracias. |
Resumiendo mucho, lo que has hecho es utilizar la función de la API PostMessage para enviar un mensaje a un control (en éste caso el form).
------------------------------------------------------------------------------- API HELP: The PostMessage function places (posts) a message in the message queue associated with the thread that created the specified window and then returns without waiting for the thread to process the message. ------------------------------------------------------------------------------- Cuando se presiona una tecla, internamente se gestiona utilizando diferentes mensajes. En éste caso, cuando pulsas una tecla (Down) se utiliza el mensaje WM_SYSKEYDOWN que le llega al formulario con el valor -en este caso- VK_F5 (que es la constante que define el F5). La API anteriormente citada sirve para añadir un nuevo mensaje a la cola de mensajes y lo que has hecho es algo así como: "Añadir a la cola un nuevo mensaje para el Formulario -Self.Handle-, del tipo WM_SYSKEYDOWN y con el valor VK_F5". |
Me va a las 1000 maravillas. Gracias miles, de verdad, de la buena.
|
La franja horaria es GMT +2. Ahora son las 23:27:14. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi