Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   No invocar evento de boton (https://www.clubdelphi.com/foros/showthread.php?t=83155)

rlavisse 16-05-2013 23:59:44

No invocar evento de boton
 
Hola ! Quisiera hacerles la siguiente consulta:
Resulta que tengo una grilla, donde tengo implementado un metodo en el keypress para que al presionar una tecla (digamos la tecla "A") me busque en la columna que estoy, la celda que comience con "A". El problema que tengo es que tengo un boton Aceptar, el cual tiene un acceso directo (El caption es "&Aceptar")
Al presionar la A en la grilla, en lugar de buscarme la letra A, me invoca al boton.
Como puedo hacer para que no se invoque en ese momento al evento del boton?
Gracias !

Nota: En el evento KeyPress del Formulario, puedo hacer algo como:
if grilla.focused Then
// ver de quitar todos los eventos de boton o similares
else
// agregar nuevamente los eventos de botones

ecfisa 17-05-2013 00:04:04

Cita:

Empezado por rlavisse (Mensaje 460573)
...
El problema que tengo es que tengo un boton Aceptar, el cual tiene un acceso directo (El caption es "&Aceptar")
Al presionar la A en la grilla, en lugar de buscarme la letra A, me invoca al boton.
Como puedo hacer para que no se invoque en ese momento al evento del boton?
Gracias !

Hola rlavisse.

La solución más simple: Elimina el caracter "&" de la propiedad Caption del TButton y situalo antes de otra letra. Por ej. "A&ceptar".

Saludos. :)

rlavisse 17-05-2013 00:07:41

No, eso no me sirve de nada. Puede que el usuario desee buscar por letra "C" .. o cualquier otra !!

ecfisa 17-05-2013 00:17:10

Hola.

Si no deseas quitar el "&", entonces proba de este modo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  if not (ActiveControl is TStringGrid) then  // o TDBGrid, ..., etc
  begin
    //Acciones del evento
    //...
    ShowMessage('click')
  end;
end;

Saludos. :)

rlavisse 17-05-2013 00:22:38

Pasa que de esa manera, no buscaria en la grilla como deseo.
Me explico mejor:

Columna 1
Juan
Luis
Pepe
Roberto
Raul

Si presiono la R, mi metodo hace que la celda que dice "Roberto" tome el foco. Si luego presiono la A, deberia ir a la celda de "Raul", ya que encuentra la coincidencia.
Pero al ingresar la A, me invoca al boton "&Aceptar"
A saber: el & del boton no puedo quitarlo, ya q es una funcionalidad de la pantalla.

ecfisa 17-05-2013 00:28:07

Hola.

Cita:

Pasa que de esa manera, no buscaria en la grilla como deseo.
Bueno, si tenes la búsqueda encapsulada en un procedimiento, una solución es:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  if not (ActiveControl is TStringGrid) then  // o TDBGrid, ..., etc
    //Acciones del evento
  else
    //llamar procedimiento de búsqueda
end;
Cita:

A saber: el & del boton no puedo quitarlo, ya q es una funcionalidad de la pantalla.
En realidad en un TButton se puede quitar sin problemas... ¿ Que componente es el botón ?

Saludos.:)

Caminante 17-05-2013 00:47:04

A mi me paso eso hasta hace 5 minutos que active la opcion dsediting en el dbgrid. Bueno yo uso el jvdbgrid y si necesito una columna de solo lectura uso el evento oncaneditcell.

Saludos


La franja horaria es GMT +2. Ahora son las 20:36:54.

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