Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   TActionList y shorcuts sobre un control (https://www.clubdelphi.com/foros/showthread.php?t=14121)

oliverinf 09-09-2004 21:28:30

TActionList y shorcuts sobre un control
 
Hola a todos, desearía saber si hay alguna manera de que las acciones de un TActionList, donde cada acción tiene un shorcut, se ejecuten sólo si el shorcut se realiza sobre un determinado control, por ejemplo, sobre un grid.

Desde ya muchas gracias.

Hasta luego.


Guillermo

roman 09-09-2004 21:39:51

Cita:

Empezado por oliverinf
sólo si el shorcut se realiza sobre un determinado control, por ejemplo, sobre un grid.

¿Qué quieres decir con ésto? Si te refieres a que sólo se ejecute la acción cuando la control activo es el DBGrid entonces puedes checar la propiedad ActiveControl del formulario en el evento OnExecute de la acción. Pero si la acción sólo se ha de realizar estando el DBGrid activo pues quizá no necesitas una acción sino simplemente ejecutar el código en el evento OnKeyDown u OnKeyUp del DBGrid.

// Saludos

oliverinf 09-09-2004 21:53:37

Gracias por tu pronta respuesta.
La idea es tener al posibilidad de que las acciones se realicen, a través de shortcuts, sólo si están sobre un determinado control.
Te cuento, tengo un form un MainMenú, un PopMenu, tiene Edits y tiene un grid. En ese grid permito insertar, editar y eliminar filas, pero deseo que esas acciones se ejecuten al presionar las teclas Ins, F2 y Del, respectivamente. Además de poder ejecutarlas desde el MainMenu y desde el PopMenu (estos ejecutan las acciones de la ActionList).
El problema lo tengo cuando estoy en un edit y presiono Del para borrar el contenido del Edit, en ese momento se ejecuta la acción del ActionList y no es lo que deseo.

Hasta luego.

roman 09-09-2004 22:07:28

Sí, tienes razón, tu planteamiento es del todo correcto.

Pues, como te dije, supongo que en el evento OnExecute miras si ActiveControl es el DBGrid:

Código Delphi [-]
procedure TForm1.Action1Execute(Sender: TObject);
begin
  if ActiveControl = DBGrid1 then
    { código a ejecutar }
end;

// Saludos

oliverinf 09-09-2004 22:50:03

Muchas gracias roman, voy a tener que hacer eso.


La franja horaria es GMT +2. Ahora son las 13:27:01.

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