Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-06-2008
Avatar de GaaK
GaaK GaaK is offline
Miembro
 
Registrado: oct 2005
Ubicación: Trujillo - Peru
Posts: 31
Poder: 0
GaaK Va por buen camino
Hola todos, he retomado este antiguo debate porque no logro entender...

Sea un Form que contiene varios Edits (u otros componentes que puedan enfocarse vía TAB).

La idea
: En Edit1 quiero mostrar el código de la tecla presionada, para ello tengo los dos procedures de dicho Edit así:

Código Delphi [-]
KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
 begin
   Edit1.Text := 'Scancode: ' + IntToStr(Key) + ' $' + IntToHex(Key,3);
 end;
 
 KeyPress(Sender: TObject; var Key: Char);
 begin
   { KeyPress isn't called if F1..F12 }
   case Key of
     { 48..57, 96..105 }
     '0'..'9'  : Edit1.Text := Key; //esta línea es para otros propósitos...
   end;
 end;
... mis rutinas funcionan bien y reconocen todas las teclas EXCEPTO la tecla TAB.
Intento reconocerla vía KeyDown (VK_TAB) o en KeyPress(#9) y siempre por siempre se enfoca el siguiente componente (Edit2 por ejemplo).

Lo que quiero: Es que me reconozca la pulsación de TAB y me muestre en Edit1 su código (9) y que termine, así como ocurre al presionar un número por ejemplo.

He intentado lo mencionado arriba (CMDialogKey) y me muestra el mensaje al presionar TAB, pero mi foco sigue moviéndose, quiero que se quede quieto.


Espero sus sabios comentarios

Gracias

- Gaak -
__________________
L'Gaak dice
Responder Con Cita
  #2  
Antiguo 19-06-2008
Avatar de GaaK
GaaK GaaK is offline
Miembro
 
Registrado: oct 2005
Ubicación: Trujillo - Peru
Posts: 31
Poder: 0
GaaK Va por buen camino
Antes que me regañen, ya conseguí la solución:

Código Delphi [-]
  private
    { Private declarations }
    procedure CMDialogKey(Var Msg: TWMKey); message CM_DIALOGKEY;

{ ... }

procedure TFormProp.CMDialogKey(var Msg: TWMKEY) ;
begin
   if (ActiveControl.Name='Edit1') then
     case Msg.Charcode of
       VK_TAB: { NOP };
     end
   else inherited; { normal for other keys }
end;
... ahora, al lado de VK_TAB intenté colocarle VK_LWIN o VK_CAPITAL y no funciona para ellos ... en fin ya conseguí lo que quería, pero si alguien puede explicar como detener (así como TAB) las teclas como CAPS, INICIO u otros, bienvenido sea.

Gracias de todas maneras.

- Gaak -
__________________
L'Gaak dice
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Hacer una pausa fuera del evento OnTimer y sin usar Sleep DarkByte Varios 9 28-06-2007 04:08:00
en que evento del dbgrid puedo hacer un operacion matematica . . . Shidalis Varios 13 26-08-2005 22:25:06
como hacer que una columna del dbgrid contenga un valor de un TEdit en cada celda Shidalis OOP 2 02-08-2005 12:05:35
Pasar el valor de un TEdit dentro de un StringGrid a otro TEdit que está fuera atirado Varios 4 11-09-2004 19:13:48
TEdit RoyTan Varios 5 26-11-2003 21:12:33


La franja horaria es GMT +2. Ahora son las 12:47:36.


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
Copyright 1996-2007 Club Delphi