PDA

Ver la Versión Completa : No invocar evento de boton


rlavisse
16-05-2013, 23:59:44
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
...
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:

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.

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:

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;

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