Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-09-2011
Avatar de weke
weke weke is offline
Miembro
 
Registrado: may 2004
Ubicación: Valencia
Posts: 170
Poder: 20
weke Va por buen camino
Question Al pulsar Enter en un boton funciona como Tabulador

Buenas tardes,
en una aplicación he detectado que en algunos botones, cuando pulso Enter para ejecutar el evento OnClick del propio botón me hace como si hubiera pulsado la tecla Tab y se me va el foco al siguiente TabOrder.

He puesto en el evento OnKeyPress del botón y en el FormKeyPress el siguiente código y no hace ni caso, como si hubiera pulsado la tecla tabulador y no se ejecuta nunca.

if (key = #13) then
Boton.Click;

Tengo varios controles de las teclas F12, F5, etc... y me funcionan correctamente.

Necesito que cuando pulse el Enter en los botones haga como el click en lugar de que se me cambie el foco.

Muchas gracias de antemano.
Un saludo.
__________________
De lo bueno lo mejor, de lo mejor lo superior.
Responder Con Cita
  #2  
Antiguo 07-09-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.461
Poder: 20
newtron Va camino a la fama
Cita:
Empezado por weke Ver Mensaje
Necesito que cuando pulse el Enter en los botones haga como el click en
Ese es el funcionamiento normal de los botones a no ser que tengas un BitBtn por ejemplo que esté la propiedad default en on y se ejecute ese botón al pulsar enter. ¿No estarás interceptando por algún sitio la pulsación del enter y cambiando su funcionamiento?
__________________
Be water my friend.
Responder Con Cita
  #3  
Antiguo 07-09-2011
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 weke.

Me inclino a pensar en la segunda opción que te dá newtron.
Primero que nada revisá si no tenés asignado algún procedimiento al evento OnMessage de la clase TApplication.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 07-09-2011
Avatar de weke
weke weke is offline
Miembro
 
Registrado: may 2004
Ubicación: Valencia
Posts: 170
Poder: 20
weke Va por buen camino
Question

Muchas gracias por responder tan rápido.

He revisado el código y controlo en el formulario no controlo la tecla enter, sin embargo en muchos TEdit si lo hago y funcionan correctamente posicionando el foco donde le indico y haciendo las operaciones indicadas.

Los botones que utilizo son los TJvXPButton de JVCL, de hecho, en el resto de pantallas utilizo los mismos botones y la funcionalidad la hace bien pero en una pantalla en concreto la funcionalidad habitual pasa de ella y hace como si pulsara el Tabulador.

He puesto un boton nuevo y me hace lo mismo. Lo unico que se me ocurre es que sea alguna propiedad del panel en el que se encuentra o del propio formulario, sigo investigando a ver si se me ha pasado alguna propiedad.

Un saludo.
__________________
De lo bueno lo mejor, de lo mejor lo superior.
Responder Con Cita
  #5  
Antiguo 07-09-2011
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 weke.

Indudablemente la diferencia de comportamiento es debido al uso del componente TJvXPButton.

El TButton ni siquiera se vé afectado cambiando el comportamiento de la tecla enter en el evento OnKeyPress del form , mediante por ejemplo:
Código Delphi [-]
// En el form: KeyPreview:= True
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if Key=#13 then
  begin
    Key:= #0;
    Perform(WM_NEXTDLGCTL,0,0);
  end;
end;

Es por eso que te sugerí revisar el evento OnMessage, ya que para lograr el comportamiento que describis es necesario hacer algo como:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnMessage := EnterATab; 
end;
...
procedure TForm1.EnterATab(var Msg: TMsg; var Handled: Boolean);
begin
  if Msg.Message = WM_KEYDOWN then
  begin
    if Msg.wParam = VK_RETURN then
      Keybd_event(VK_TAB, 0, 0, 0);
  end; 
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 07-09-2011
Avatar de weke
weke weke is offline
Miembro
 
Registrado: may 2004
Ubicación: Valencia
Posts: 170
Poder: 20
weke Va por buen camino
Question

ecfisa, he revisado el código y en ningún momento se hace nada para alterar lo que me indicas.

Lo extraño es que en el resto de pantallas que utilizo estos mismos botones no cambia la funcionalidad y al pulsar Enter se ejecuta el evento Onclick de los botones. He revisado las propiedades del formulario y del panel y son iguales. La pantalla en cuestión la abro desde la pantalla principal de la aplicación.

Un detalle que me acabo de percatar. En los TEdits no controlo si es la tecla Enter y sin embargo también me actua como si fuera Tabulador. Tiene que ser alguna opción general y no del botón.

Sigo investigando. Muchas gracias de nuevo y un saludo.
__________________
De lo bueno lo mejor, de lo mejor lo superior.
Responder Con Cita
  #7  
Antiguo 08-09-2011
Avatar de weke
weke weke is offline
Miembro
 
Registrado: may 2004
Ubicación: Valencia
Posts: 170
Poder: 20
weke Va por buen camino
Thumbs up

Por fin ayer tarde encontré el porqué del funcionamiento del Enter.

Es una aplicación que no he hecho yo y estaba cambiando la parte gráfica cuando me encontré con este problema. Pues la solución es que utilizaron un componente de las JVCL que hace precisamente esto, que el Enter se comporte como el Tabulador a piñón sin hacer caso a nada más. No estaba visible y no lo localicé hasta que empecé a mirar componente a componente a ver las propiedades de cada uno y me topé con este componente, que además estaba detrás de otro y no lo podía ver.

Muchas gracias de nuevo por vuestra ayuda.
Un saludo.
__________________
De lo bueno lo mejor, de lo mejor lo superior.
Responder Con Cita
  #8  
Antiguo 08-09-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.461
Poder: 20
newtron Va camino a la fama
Cita:
Empezado por weke Ver Mensaje
...un componente de las JVCL que hace precisamente esto, que el Enter se comporte como el Tabulador a piñón sin hacer caso a nada más
Curioso componente.
__________________
Be water my friend.
Responder Con Cita
  #9  
Antiguo 12-09-2011
Avatar de weke
weke weke is offline
Miembro
 
Registrado: may 2004
Ubicación: Valencia
Posts: 170
Poder: 20
weke Va por buen camino
Thumbs up

Buenas tardes,
el componente en cuestión es el "TJvEnterAsTab" y está en la pestaña "Jv Non-Visual", por si a alguien le interesa este funcionamiento.

Un saludo.
__________________
De lo bueno lo mejor, de lo mejor lo superior.
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
Quitar sonido de error al pulsar Enter madiazg Varios 2 25-08-2008 21:33:38
Pulsar un Botón de una página web. imossa Internet 4 04-05-2007 10:21:01
Usar Enter como el tabulador susy Varios 27 09-08-2006 09:39:17
Pitido al pulsar Enter JavierB Varios 2 06-04-2005 13:34:44
No funciona el tabulador en la aplicacion jfloro Varios 3 29-05-2003 23:04:25


La franja horaria es GMT +2. Ahora son las 15:23:45.


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