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 12-05-2007
calogero calogero is offline
Miembro
 
Registrado: oct 2006
Ubicación: Los Mochis, Sinaloa, México
Posts: 76
Poder: 18
calogero Va por buen camino
Funcionamiento extraño tecla rapida y tbutton

Hola que tal compañeros !!!

Tengo una preguntita, a ver si saben la respuesta,

resulta que tengo un botón eliminar con la tecla de accesso rapido es decir asi (&Eliminar) se supone que si se presiona alt+E debe activarse este botón y asi lo hace, pero también se activa sin presionar la tecla Alt, resulta que al presionar solamente la tecla E, ya hice pruebas y no tengo codigo que interfiera, solo tengo ese botón y un dbgrid, y creo que son los dbgrid los que me provocan ese funcionamiento, en otros formularios del sistema sucede lo mismo, si alguien sabe la respuesta o algún comentarios de lo que crea que pueda ser bienvenido.

bueno gracias y hasta pronto.
__________________
La conquista mas grande de un hombre es la conquista de el mismo.
Responder Con Cita
  #2  
Antiguo 12-05-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cool Solucion

Bueno, cuando un boton tiene el foco pues con solo apretar la tecla con "e" estando tu Caption con "&Eliminar" realizará el evento OnClick, te aconsejo revisar el orden de las propiedad de los objetos TabOrder, y tambien TabStop...

Ej. si tienes un TEdit (por ejemplo) que tiene el foco y pulsas "e" no pasará nada, si tienes otro boton y tiene el foco y haces lo mismo no pasara nada.

Suerte
Responder Con Cita
  #3  
Antiguo 12-05-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por cHackAll
Bueno, cuando un boton tiene el foco pues con solo apretar la tecla con "e" estando tu Caption con "&Eliminar" realizará el evento OnClic (...)
Por las pruebas que hize sucede incluso si el botón no tiene el foco. Y, por otro lado, independientemente del o los "DBGrid".
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 12-05-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cool Huuyyy

Estan seguros? tengo dudas! osea:

La ventana solo tiene un DBGrid y un Boton, el boton NO tiene el foco y pulsando la tecla realiza el OnClick???? si??????
Responder Con Cita
  #5  
Antiguo 12-05-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Así parece, salvo que el foco del usuario esté en un control que admita caracteres, es decir, si está en un "TMemo", lógicamente cuando pulses la tecla "e" se escribirá en el "TMemo", pero, si hay dos botones, y uno de ellos tiene como tecla "aceleradora" la "e", y el foco del usuario está en el otro botón (por ejemplo), entonces se ejecuta el evento "OnClick" del botón de marras.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 13-05-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cool Solucion parcial

Ahhh tienes toda la razón!!! pero esta definitivamente relacionado (el problema) con el foco del objeto y la forma en que los botones reaccionan!
Realizado un pequeño análisis es un error de la VCL, pero bueno aca te dejo una forma de solucionar tu problema:

Código Delphi [-]
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var Index, Pos: Cardinal; WinControl: TWinControl;
begin
 Index := ControlCount;
 while Index <> 0 do
  begin
   Dec(Index);
   if (Controls[Index] is TButton) then
    with Controls[Index] as TButton do
     begin
      Pos := System.Pos('&', Caption);
      if (Pos > 0) and (Pos < Length(Caption)) and
         ((Key = $20) or (Key = (Byte(Caption[Pos + 1]) and $DF))) and
         ((ssAlt in Shift) or (ActiveControl.Name = Name)) then
       OnMouseDown(nil, mbLeft, [], 0, 0);
     end;
   end;
end;
 
procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 if Button <> mbLeft then Exit;
 Application.MessageBox('Button 1', 'Pseudo OnClick');
end;
 
procedure TForm1.Button2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 if Button <> mbLeft then Exit;
 Application.MessageBox('Button 2', 'Pseudo OnClick');
end;

Espero te sirva!
Archivos Adjuntos
Tipo de Archivo: zip OnClick.zip (1,4 KB, 8 visitas)
Responder Con Cita
  #7  
Antiguo 16-05-2007
fdelamo fdelamo is offline
Miembro
 
Registrado: oct 2005
Ubicación: Sotoca de Tajo - Guadalajara (ESP)
Posts: 86
Poder: 19
fdelamo Va por buen camino
A mí me pasó lo mismo ...

Hola,

a mí me pasó lo mismo, creo que es un error de los controles de windows, no de la VCL, ya que hice una prueba con un formulario de Access y también pasaba.

Yo encontré una "solución", mira este post y eso sí, a ver si entre todos se puede mejorar ... que seguro se puede.

PD: En Win98 el programa daba un error ...

Un saludo
__________________
Sotoca Web
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
saber que tecla se presiona despues de X tecla amadis OOP 9 04-01-2008 13:16:35
Imagen en TButton albion Varios 8 27-08-2007 22:30:15
Funcionamiento extrano del compilador? Drkwrz Varios 1 07-06-2005 15:00:59
Tecla PetSis y tecla Inter Tomás Windows 0 24-04-2004 14:20:19
TButton Humberto Pertuz API de Windows 3 17-12-2003 19:04:13


La franja horaria es GMT +2. Ahora son las 01:04:03.


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