![]() |
Atajos de Teclado en Formularios MDIForm
Hola A Todos
Pregunta: No puedo hacer que el formulario principal de mi aplicacion.capture una tecla pulsada considerando que el formulario principal tiene en true la propiedad keypreview y el mismo es MDIForm. Gracias. :confused: |
Donde la estás intentando capturar ? En el evento OnKeyPress, en el evento OnKeyDown, o mediante un TActionManager ?
|
En el Evento OnKeyDown.
Saludos... |
Pues te pediría que pusieras un poco de tu código, ya que a mi no me dá problemas de ningún tipo.
Está claro que tienes que poner la rutina del evento OnKeyDown que quieres capturar en tu form principal que es MDIForm. Y si tienes la propiedad KeyPreview a True de dicho MDIForm, antes de comprobar ningun otro evento de teclado te debe de entrar a dicho procedimiento OnKeyDown del Form principal (el MDIForm). Podrías comprobarlo también con el Debug, a ver si realmente te está entrando a dicho procedimiento. A lo mejor estás buscando donde no es y descativas algo o cambias algo en otra parte de tu código. Lo dicho, si pudieras poner algo de tu código sería mejor. Saludos, ;) |
Bueno Mira, lo he debuggeado y efectivamente no pasa por el evento onkeyDown :
propiedad KeyPreview del Formulario MdiForm en True. procedure TfmPrincipal.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key = vk_f1 then showmessage('Hola Mundo'); end; end. lo que si les comento, que yo tengo un componente image con un jpg cubriendo todo el area cliente del formulario principal, de todas formas, lo puse en visible false y asi y todo no entra al evento FormKeyDown. lo que yo necesito hacer es que el usuario apretando las teclas de funcion acceda a las operaciones mas comunes de mi sistema. saludos. |
Claro, lo que sucede es que al ser el formulario un MDIForm no captura las pulsaciones.
Lo que debes utilizar es un TActionList, como lo describo en este hilo. |
Efectivamente tienes razón. Lo acabo de comprobar y no funciona.
Lo que pasa es que yo lo tenía sobre un MDIChild con Frames y pensaba que funcionaría de igual manera con el formulario principal. Consultado la ayuda de Delphi : Cita:
Tendrás que utilizar entonces un TActionManager que seguro que si funciona. Si necesitas más ayuda al respecto de la utilización de este componente puedes consultar la propia ayuda del foro, o si tienes cualquier duda en concreto vuelve a preguntar por aqui. ;) |
... se me adelantaron mientras estaba escribiendo :o
|
Vamos, vamos, A escribir más rápido!!! :)
|
Muchas Gracias!!! :)
Pruebo y Comento. Saludos.:D |
La franja horaria es GMT +2. Ahora son las 17:24: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