PDA

Ver la Versión Completa : Controlar pulsacion de una tecla desde toda la aplicacion


Sick boy
21-05-2004, 11:56:54
Hola,

Tengo una aplicacion MDI, y me gustaria poder controlar la pulsacion de una tecla (F10, por ejemplo), desde toda la aplicacion, sin tener que implementar el evento OnKeyDown en todos los forms.

Estoy tratando de que esa pulsacion se controle desde el MDI principal, pero cuando se carga otro form, las pulsaciones de las teclas hacen saltar el evento del form hijo.

El tema de herencia visual ya no me es posible, ya que las forms hijas ya estan todas creadas, y ahora sería un poco complejo cambiar todo.

He estado investigando sobre el tema de los hooks de teclado, pero no se si será la mejor solucion al problema.

Espero vuestras sugerencias, un saludo

delphi.com.ar
21-05-2004, 15:29:08
Puedes hacerlo registrando "HotKeys", mediante la WinApi RegisterHotKey pero del pasandole el Handle de la aplicación.

Saludos!

roman
21-05-2004, 16:43:56
Otra forma de hacer esto es colocar una componente TActionList en el formulario principal asignándole a la acción que desees la tecla F10 como HotKey. Si desconoces el uso de esta componente tengo entendido que en la página (http://www.clubdelphi.com/users/cadetill) del amigo cadetill hay un ejemplo de su uso.

// Saludos

Sick boy
21-05-2004, 17:13:08
Gracias a los dos.

Ya lo he resuelto, con la winapi, y funciona como pretendia.

Tambien he visitado la pagina de cadetill, pero me pareció más facil el metodo que proponia nuestro com.ar
Quizas deba investigar un poco mas el TActionList

Gracias, y un saludo a todos

roman
21-05-2004, 17:27:10
Quizas deba investigar un poco mas el TActionList


Un ejemplo rápido:

1. Agregas la componente TActionList
2. Das doble click sobre ella para abrir el editor de acciones
3. En el editor de acciones agregas una con el botón "New Action"
4. En las propiedades de la nueva acción, en el inspector de objetos, asignas a la propiedad ShortCut la tecla deseada.
5. Das doble click sobre la acción para generar el código de su evento OnExecute donde colocas lo que desees hacer cuando se presione la tecla que asignaste a ShortCut.

// Saludos

delphi.com.ar
21-05-2004, 17:30:48
Digamos que "mas fácil" es utilizar el TActionList, yo como trabajo con versiones viejas de delphi, no estoy familiarizado a usarlo. Pero te recomiendo lo que sugiere Román.

Saludos!