Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-09-2020
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Identificar que tecla he pulsado

En concreto estoy tratando de saber si se ha pulsado Shift + Tab para volver al campo de edición anterior. Tengo puesto este código en el evento OnKeyDown:
Código:
if (Key == VK_TAB && Shift.Contains(ssShift))
     Edit1->OnExit = NULL;
pero sólo me reconoce la pulsación de Tab.
Responder Con Cita
  #2  
Antiguo 29-09-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Eso no lo hace de forma predeterminada?
Responder Con Cita
  #3  
Antiguo 30-09-2020
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
No. Sólo me reconoce haber pulsado el TAB.
Responder Con Cita
  #4  
Antiguo 30-09-2020
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Revisa wl orden de tabulación de las cajas de edición.

Esto lo hace el SO de forma automática.

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #5  
Antiguo 30-09-2020
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Cita:
Empezado por fjcg02 Ver Mensaje
Revisa wl orden de tabulación de las cajas de edición.

Esto lo hace el SO de forma automática.

Saludos
No entiendo que quieres decir.
Responder Con Cita
  #6  
Antiguo 30-09-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
La propiedad taborder de los componentes de edición.
Responder Con Cita
  #7  
Antiguo 30-09-2020
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
La propiedad taborder de los componentes de edición.
Vale.

En este panel el TabOrder es 0 a 3 desde la izquierda. Si estoy en el último campo (Censo) y no he puesto ninguna cantidad pero tengo que volver hacia atrás, al salir de ese Edit se hace una validación para que no se ponga un valor nulo o incorrecto y no se me ocurre como evitar esa validación; por eso estaba intentando hacerlo en el OnKeyDown.
Responder Con Cita
  #8  
Antiguo 30-09-2020
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Intenta de este modo:

.h
Código PHP:
...

class 
TForm1 : public TForm
{
__published:    // IDE-managed Components
  
TEdit *Edit1;
  
TEdit *Edit2;
  
TEdit *Edit3;
  
TEdit *edCenso;
  
void __fastcall edCensoExit(TObject *Sender);
private:    
// User declarations
  
void __fastcall CMDialogKey(TWMKeymsg);
  
BEGIN_MESSAGE_MAP
    MESSAGE_HANDLER
(CM_DIALOGKEYTWMKeyCMDialogKey)
  
END_MESSAGE_MAP(TForm)
public:        
// User declarations
  
__fastcall TForm1(TComponentOwner);
};

... 
.cpp
Código PHP:
...

bool Valida true

void __fastcall TForm1::edCensoExit(TObject *Sender)
{
  if (
Valida)
    
ShowMessage("SE VALIDA");
  else
    
ShowMessage("NO SE VALIDA");
}


void __fastcall TForm1::CMDialogKey(TWMKeymsg)
{
  
Valida = !(msg.CharCode == VK_TAB && GetKeyState(VK_SHIFT) < 0);
  
TForm::Dispatch(&msg);

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 30-09-2020 a las 16:40:39.
Responder Con Cita
  #9  
Antiguo 30-09-2020
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola.

Intenta de este modo:
Saludos
Gracias por la ayuda. Funciona pero al entrar en OnExit me da un error Stack Overflow, y es que sigue yendo a validar las teclas pulsadas.
Responder Con Cita
  #10  
Antiguo 30-09-2020
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola de nuevo.

Tal vez haya algún evento mas en juego en tu código. En mi prueba, que realiza la validación en el evento OnExit, no dá error en absoluto.

Te adjunto la prueba para que cotejes, espero que te sirva.

Saludos
Archivos Adjuntos
Tipo de Archivo: zip Matilla.zip (455,7 KB, 3 visitas)
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 30-09-2020 a las 22:19:36.
Responder Con Cita
  #11  
Antiguo 30-09-2020
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

También puedes limitar la comprobación a los edits:
Código PHP:
void __fastcall TForm1::CMDialogKey(TWMKeymsg)
{
  if (
ActiveControl->ClassNameIs("TEdit"))
    
Valida = !(msg.CharCode == VK_TAB && GetKeyState(VK_SHIFT) < 0);
  
TForm::Dispatch(&msg);

O sólo al edit en cuestión:
Código PHP:
void __fastcall TForm1::CMDialogKey(TWMKeymsg)
{
  if (
ActiveControl->Name == "edCenso" )
    
Valida = !(msg.CharCode == VK_TAB && GetKeyState(VK_SHIFT) < 0);
  
TForm::Dispatch(&msg);

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #12  
Antiguo 01-10-2020
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Gracias ecfisa. El ejemplo que me has mandado funciona perfectamente. Tengo que ver que estoy haciendo mal para que a mi no me funcione.
Responder Con Cita
  #13  
Antiguo 01-10-2020
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Ya encontré que estaba haciendo mal. Estaba definiendo mal esa variable Valida y por eso no hacía bien el proceso. Gracias a todos.
Responder Con Cita
  #14  
Antiguo 01-10-2020
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.234
Poder: 20
ElKurgan Va camino a la fama
Thumbs up

Gracias a ti, por compartir la solución

Un saludo
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
Efecto button pulsado mizzard C++ Builder 4 08-01-2012 23:23:33
saber que tecla se presiona despues de X tecla amadis OOP 9 04-01-2008 13:16:35
como se si he pulsado un boton ercrizeporta Varios 11 03-04-2007 13:56:56
Cambiar la tecla TAB por la tecla ENTER al pasar de controles dec Trucos 0 30-06-2006 13:43:03
he pulsado el botón enviar?? valentine API de Windows 7 02-06-2004 17:21:54


La franja horaria es GMT +2. Ahora son las 15:13:19.


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