![]() |
capturar ESC+F4
Hola, estoy queriendo capturar las teclas Esc+F4 osea que al presionarlas juntas realice una acción, he buscado en el foro y encontré varios hilos interesantes pero ninguno me ayuda con mi problema, hay soluciones para cuando uno quiere presionar dos teclas con alt,shift,ctrl…. Pero no con Escape.
Si detecto las teclas por separado no hay problema en el Onkeydown funciona perfecto pero al querer capturar ambas no hay caso. He probado asi Código Delphi [-] if (key=vk_escape) and (key=vk_f4) then {lo que quiera hacer} Lo probé en el Onkeydown, Onkeypress, Onkeyup y nada esto lo estoy probando en un Dbgrid y en un Dbedit, y de tanto probar y ver en los hilos relacionados en el foro me encontré con otro problema el mendigo Escape funciona como cancelación de acción, ósea que si estoy en el dbedit y doy escape me borra lo que escribí osea que cuando lo quiero capturar primero me borra el contenido y luego ejecuta mi código, de igual manera en el dbgrid, me cancela toda la fila con valores que había cargado. En síntesis primero creo que debo solucionar el tema de que hay algo que captura el Escape antes que el Onkeypress y ahí estoy perdido porque no sabría que seria. Si me pudiesen dar una mano les agradecería… Como datos extras les digo que el form tiene la propiedad keypreview=false para que el from no trate de capturar las teclas, todos los botones que posee el formulario tienen la propiedad default=false para que no ejecuten ninguna acción al enter o al escape como he leido en otro hilos No escribo los otro codigo que encontre en los hilos porque ya se hace muy larga mi explicación…:p |
yo de nuevo
me pasaron este codigo y solucione lo del esc+f4
if (HiWord(GetKeyState(VK_escape)) <> 0)and(HiWord(GetKeyState(VK_f4)) <> 0) then :) pero aun no puedo solucionar lo de evitar la accion del escape osea que no me cancele o borre nada:o |
Como has encontrado la solución, lo que procede es dejarlo, no borrarlo, así otros usuarios tendrán acceso a esa solución.
Un Saludo. |
A ver si esto te resulta útil:
Código:
object Form1: TForm1 |
interesante aporte Ardilla lo voy a probar:)
|
Date cuenta, que el procedimiento en sí, no comprueba que ambas estén pulsadas, sino que comprueba que la secuencia sea precisamente esa.
Se puede optimizar un poco para comprobar que a sido correcta la secuencia. Es decir, tal cual está, se puede pulsar ESC, A y F4 y saltaría, por lo que cambiando el estado de la variable en el caso de que no sea esa la secuencia, se vuelve a "iniciar" la variable.
También se podría comprobar la secuencia distinta por ejemplo F4-ESC, solamente hay que jugar con las variables........ |
La franja horaria es GMT +2. Ahora son las 13:22:57. |
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