| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
neg1414 Master

Registrado: 31 Ene 2007Mensajes: 284
|
Publicado: Lun 17 Nov, 2008 8:13 pm Asunto: capturar tecla. |
|
|
Buenas tengo un Form con un edit y un listbox, lo que pretendo es capturar la tecla Tab en los eventos KeyPress, o Keydown.... de los dos componentes. Buscando en este foro (y en otros) he encontrado un tema relacionado en el que se se da como solucion capturar el mensaje.
| Código: |
private: // User declarations
void __fastcall CmDialogKey(TCMDialogKey& msg)
{
if ( msg.CharCode == VK_TAB )
ShowMessage("se pulso tab");
// Si queremos que el mensaje siga su curso normal
// añadimos la linea siguiente, sino la quitamos
TForm::Dispatch( &msg );
}
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(CM_DIALOGKEY, TCMDialogKey, CmDialogKey)
END_MESSAGE_MAP(TForm)
|
lo he probado pero no es realmente lo que quiero (que me lo detecte en los eventos KeyPress....) o al menos yo no se como hacerlo.
Tambien se habla del mensaje WmGetDlgCode pero o tampoco sirve o bien no se utilizarlo..
Necesito ayuda Gracias. |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Lun 17 Nov, 2008 8:36 pm Asunto: |
|
|
Puedes modificarlo de esta manera para que la tecla TAB llegue hasta el OnKeyPress:
Suponiendo que los controles de los que queremos hacernos cargo se llaman "Edit1" y "ListBox1":
| Código: | private: // User declarations
void __fastcall CmDialogKey(TCMDialogKey& msg)
{
if (msg.CharCode == VK_TAB
&& ActiveControl != Edit1
&& ActiveControl != ListBox1)
{
TForm::Dispatch( &msg );
}
}
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(CM_DIALOGKEY, TCMDialogKey, CmDialogKey)
END_MESSAGE_MAP(TForm)
|
|
|
| Volver arriba |
|
 |
neg1414 Master

Registrado: 31 Ene 2007Mensajes: 284
|
Publicado: Lun 17 Nov, 2008 8:55 pm Asunto: |
|
|
Perfecto.
Muchas gracias Leo (otra vez) |
|
| Volver arriba |
|
 |
|