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 28-02-2005
JODELSA JODELSA is offline
Miembro
 
Registrado: may 2003
Posts: 89
Poder: 21
JODELSA Va por buen camino
tab que numero de tecla es

hola!

En mis aplicaciones utilizo la tecla Enter para validar y moverse al siguiente campo, de esta manera:

if key = 13 then
begin
.....
....
end;

Quiero Hacer lo mismo pero con la tecla TAB, pero no se cual es el número de esta, si hay algun lugar donde puedo encontrar esto valores diganmelo.
Responder Con Cita
  #2  
Antiguo 28-02-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
9

// Saludos
Responder Con Cita
  #3  
Antiguo 28-02-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Este ejemplo aunque no funciona con todas las teclas, en concreto con TAB no va, pero te puede servir para la mayoría.

Código Delphi [-]
 
 procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
   Shift: TShiftState);
 begin
 Label1.Caption:='Tecla '+inttostr(key);
 end;

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #4  
Antiguo 28-02-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Leyendo la respuesta del amigo Marcos veo que tengo que leer con más detenimiento la pregunta original.

Ciertamente 9 es el código de la tecla de tabulación pero no podrás detectarla con lo métodos usuales de los eventos OnKeyDown, OnKeyUp u OnKeyPress.

La tecla Tab es una tecla especial para mover el foco del control activo y por lo mismo no se manda a los controles de la misma forma que otras teclas.

Un Edit, por ejemplo, no recibe el evento OnKeyDown ni OnKeyPress con esta tecla. Sí recibe el OnKeyUp pero demasiado tarde: si el foco está en Edit1, al oprimir Tab, primero se cambia el foco al siguiente control, digamos Edit2 y éste último es quien recibe el evento.

Podrías intentar poner una componente TApplicationEvents y usar su evento OnMessage para detectar la tecla:

Código Delphi [-]
if (Msg.message = WM_KEYDOWN) and (Msg.WParam = 9) then
  ...

// Saludos
Responder Con Cita
  #5  
Antiguo 01-03-2005
JODELSA JODELSA is offline
Miembro
 
Registrado: may 2003
Posts: 89
Poder: 21
JODELSA Va por buen camino
Mi problema consiste exactamente en que tengo un edit en mi formulario
y controlo varios proceso cuando el usuario presiona ENTER, pero algunos usuario presionan TAB para salir, por lo que quiero evitar que salgan del edit con TAB, puedo hacerlo tambien en el evento on EXIT y lo hace aunque salgan con TAB, pero en algunas ocaciones me produce un efecto algo incomodo.
Responder Con Cita
  #6  
Antiguo 01-03-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pues tal como te dije. Hasta donde probé ayer, si en el evento OnMessage de una componente ApplicationEvents pones

Código Delphi [-]
if (Msg.message = WM_KEYDOWN) and (Msg.WParam = 9) then
  Msg.Wparam := 0;

inhabilitas la tecla del todo.

// Saludos
Responder Con Cita
  #7  
Antiguo 01-03-2005
JODELSA JODELSA is offline
Miembro
 
Registrado: may 2003
Posts: 89
Poder: 21
JODELSA Va por buen camino
Tu me dice que ApplicationEvents es un componente, donde lo consigo,
Responder Con Cita
  #8  
Antiguo 01-03-2005
JODELSA JODELSA is offline
Miembro
 
Registrado: may 2003
Posts: 89
Poder: 21
JODELSA Va por buen camino
Excusame pero ya lo encontre
gracias..
Responder Con Cita
  #9  
Antiguo 01-03-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por JODELSA
Tu me dice que ApplicationEvents es un componente, donde lo consigo,
Pues no sé qué versión de Delphi tengas pero desde por lo menos la versión 6 la componente viene en la pestaña Additional de la paleta de herramientas.

// Saludos
Responder Con Cita
  #10  
Antiguo 01-03-2005
JODELSA JODELSA is offline
Miembro
 
Registrado: may 2003
Posts: 89
Poder: 21
JODELSA Va por buen camino
Oye la operación fue un exito....
Responder Con Cita
  #11  
Antiguo 01-03-2005
ptt ptt is offline
Miembro
 
Registrado: may 2003
Posts: 60
Poder: 21
ptt Va por buen camino
Acá están dos ejemplos de como se puede capturar la tecla TAB, el primero para el evento KeyDown o KeyUP y el segundo para el evento KeyPress.

Código:
procedure TForm1.dbgDetalleKeyDown(Sender: TObject; var Key: Word;  Shift: TShiftState);
begin
   if Key = VK_TAB then
     Key := 0;
end;

procedure TForm1.dbgStockKeyPress(Sender: TObject; var Key: Char);
begin
  if key = #9 then
    Key := 0;
end;
Al asignar Key := 0 es como si no se hubiera presionado ninguna tecla, fijate cual te sirve para tus propósitos.
__________________
Saludos.
Responder Con Cita
  #12  
Antiguo 01-03-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por ptt
Acá están dos ejemplos de como se puede capturar la tecla TAB, el primero para el evento KeyDown o KeyUP y el segundo para el evento KeyPress.
¿Has probado este código? Al menos en Delphi 7 no funciona.

// Saludos
Responder Con Cita
  #13  
Antiguo 01-03-2005
ptt ptt is offline
Miembro
 
Registrado: may 2003
Posts: 60
Poder: 21
ptt Va por buen camino
Este código lo copié de aplicaciones que hice en Delphi 5, la verdad es que no lo probé en versiones mas nuevas, pero hoy por la noche (en Argentina sería en 5 hs) lo pruebo en D2005.
Que error está dando el compilador?? o es otro el problema?
__________________
Saludos.
Responder Con Cita
  #14  
Antiguo 01-03-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Acabo de probar en Delphi 5 y tampoco funciona.

No es que de algún error, es simplemente que no detecta la tecla. Como mencioné, la tecla TAB no se comporta como el resto.

// Saludos
Responder Con Cita
  #15  
Antiguo 01-03-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Aquí hay una explicación muy detallada de por qué es así dada por Peter Below del TeamB de Borland.

// Saludos
Responder Con Cita
  #16  
Antiguo 01-03-2005
JODELSA JODELSA is offline
Miembro
 
Registrado: may 2003
Posts: 89
Poder: 21
JODELSA Va por buen camino
Utilizando el componente ApplicationEvents y anulando la tecla queda perfecto. Asi que se pueden probar.
Responder Con Cita
  #17  
Antiguo 01-03-2005
ptt ptt is offline
Miembro
 
Registrado: may 2003
Posts: 60
Poder: 21
ptt Va por buen camino
Bueno Roman, estuve leyendo los datos que enviaste y tienes razón en lo que dices.
El código que envié en el mensaje anterior corresponde a los eventos de unos DBGrids donde si funciona.
Y me ha quedado claro que no funcionaría con los TEdit.
__________________
Saludos.
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


La franja horaria es GMT +2. Ahora son las 16:58:32.


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