FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Como obtener Foco de Entrada con las teclas de cursor
Hola Amigos,
Como puedo obtener foco de entrada utilizando las teclas del cursor (arriba y abajo) en un form con múltiples campos de edición? Quiero utilizar las teclas del cursor en vez de utilizar el tabulador. Sé que puedo escribir rutinas de eventos que se activen al pulsar el cursor arriba o cursor abajo en un campo de edición, pero de qué manera se podría implementar esta opción para que toda la aplicación en su conjunto la utilize. Gracias de antemano. |
#2
|
||||
|
||||
Q tal, disculpa si la respuesta q doy esta incompleta la verdad es q ando un poco lleno de trabajo, pero para empezar este codigo te debe servir, lo primero q necesitas es capturar cuando el usuario presiona una de las dos teclas q necesitas, para hacerlo existen muchas formas pero personalmente prefiero esta por q es muy sencilla. Para iniciar debes crear un procedimiento en el form q te permita capturar los mensajes de la aplicacion...
type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } procedure ApplicationMessage(var Msg: TMsg; var Handled: Boolean); public { Public declarations } end; el codigo del procedimiento es el siguiente: procedure TForm1.ApplicationMessage(var Msg: TMsg; var Handled: Boolean); begin case Msg.Message of WM_KEYUP: // si deseas q se ejecute al presionar y no al levantar la tecla cambias por WM_KEYDOWN =P if Msg.wParam = 13 then Showmessage('Presionaste Entrar'); end; end; simplemente debes conocer el valor entero de las teclas q deseas capturar, haciendo unas modificaciones al codigo podras saberlos tu mismo =) para terminar debes asignar el procedimiento a la aplicacion en el evento OnCreate del Form: procedure TForm1.FormCreate(Sender: TObject); begin application.OnMessage:= ApplicationMessage; end; IMPORTANTE: debes asignar nil al mismo evento en el OnDestroy del Form o te llevaras malas sorpresas... XD procedure TForm1.FormDestroy(Sender: TObject); begin Application.OnMessage := nil; end; espero te sirva para iniciar... Salu2
__________________
Diego. Colombia es pasión. |
|
|
|