Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Capturar combinaciones de teclas tipo CTRL + A (https://www.clubdelphi.com/foros/showthread.php?t=40931)

almudena_13 02-03-2007 12:02:42

Capturar combinaciones de teclas tipo CTRL + A
 
Hola A Todos!

Muchas gracias de antemano!

He estado leyendo mensajes por los foros para ver si encuentro la solución a mi problema, pero debo ser un poco cortita porque no me he enterado aun....
Pido perdón si la solución ya estaba escrita y no he sabido verla....

Bueno, os cuento...

Tengo que capturar combinaciones de teclas tipo CTRL+M, CTRL+N, etc...

Tengo definido el siguiente código:
procedure TfrmMIEMess.FormActivate(Sender: TObject);
begin
SaveMessageHandler := Application.OnMessage;
Application.OnMessage := MyMessageHandler;
end;

donde MyMessageHandler es el método que voy a utilizar para capturar las teclas, y de hecho ya las estoy capturando, pero.... Solo puedo hacerlo de una en una.... no se si me explico...
Mi metodo esta definido de la siguiente manera:
procedure TfrmMIEMess.MyMessageHandler(var Msg: TMsg; var Handled: Boolean);
Donde Msg.message me dice si se ha producido un WM_KEYDOWN o WM_KEYUP y Msg.wParam me indica la tecla que se ha pulsado, pero.... ¿que puedo hacer en este caso que se estan pulsando dos teclas?
¿Estoy utilizando un metodo equivocado? ¿Se puede hacer algo con este que ya tengo definido?

Hace unos dias ya escribi pidiendo ayuda con un tema de menús y como dije en ese momento, esta aplicación me ha caido ahora, ha ido pasando de mano en mano y el codigo es totalmente chapucero con lo que no entiendo la mitad de las cosas. (aparte que mis conocimientos de Delphi no es que sean muy extensos)

Os agradeceria enormemente cualquier ayuda que pudierais ofrecerme.

¡y disculpad por el pedazo de mensaje que estoy escribiendo!

Muchas gracias!

almudena..

seoane 02-03-2007 13:06:21

En el evento WM_KEYDOWN o WM_KEYUP, puedes comprobar las teclas que están pulsada. Por ejemplo:
Código Delphi [-]
  if GetKeyState(VK_SHIFT) < 0 then
    // Esta pulsada la tecla mayusculas
  if GetKeyState(VK_CONTROL) < 0 then
    // Esta pulsada la tecla Ctrl
Así si queremos detectar, por ejemplo, que se ha pulsado Ctrl+E en el evento WM_KEYDOWN comprobamos que la tecla es la 'E' y entonces utilizando GetKeyState comprobamos que la tecla Ctrl esta también pulsada.

almudena_13 02-03-2007 13:27:00

Capturar combinaciones de teclas tipo CTRL + A
 
Muchas gracias!

Lo probare y te cuento....

Lepe 02-03-2007 14:23:35

¿Qué versión de delphi usas?

Mira si tienes un TActionList en la paleta de componentes (en las 3 primeras pestañas debe estar), puedes indicar a cada TAction una combinación de teclas y lo que debe ejecutar cuando se pulse cada una de ellas.

Así te olvidas de esa gestión de teclas.

Saludos

roman 02-03-2007 17:31:12

Y aún si no cuenta con esa componente, podría repensar si no hay una forma más directa. Es decir, por ejemplo un MenuItem tiene su propiedad ShortCut que permite establecer la combinación de teclas.

// Saludos

almudena_13 05-03-2007 15:51:13

Capturar combinaciones de teclas tipo CTRL + A
 
Cita:

Empezado por roman
Y aún si no cuenta con esa componente, podría repensar si no hay una forma más directa. Es decir, por ejemplo un MenuItem tiene su propiedad ShortCut que permite establecer la combinación de teclas.

// Saludos


Muchas gracias a todos por las contestaciones!
y siento haber tardado tanto en contestar pero entre el finde y demas cosas que he tenido que hacer esta mañana pues eso....

El tema es que precisamente tengo un menu y las teclas que quiero capturar son shortcuts de este menu, lo que pasa es que tengo otras funciones entre medias que estan capturando todas las teclas y entonces "inutilizan" mi menu...

Es un follon un poco extraño... Y no se si me he explicado....
Voy a probar con el TActionList y os cuento, aunque no sera rapido porque ahora me han dicho que deje lo de delphi para hacer otra cosa....


En fin, muchisimas gracias a todos!!

pd: leo las consultas del foro para ver si puedo ayudar a alguien pero soy muy nueva en delphi y no se hacer nada, jooooo....

pd2: alguien pregunto que version de delphi utilizo pues es la 7...

besitos!
almudena..

Diego827 11-11-2015 09:16:52

Mil gracias después de 10 años
 
Amigos: mil gracias después de 10 años!!! resulta que encontré aquí la solución a uno de mis problemas. Gracias.


La franja horaria es GMT +2. Ahora son las 22:37:41.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi