PDA

Ver la Versión Completa : como lanzar un tactionlist desde el código


r1d2m3
30-08-2010, 04:45:48
Hola a todos, explicaré un poco mejor el título con la siguiente pregunta: ¿existe alguna forma de lanzar una acción creada con un tactionlist desde una línea de código?. Hasta donde he usado las tactionlist, las mismas debían estar asociadas a la propiedad Action de un menú, botón, etc, etc, cualquier componente que tuviera disponible la propiedad Action. Mi problema es que, bajo ciertas circunstancias, debo lanzar una de estas acciones directamente desde el código y no se como se resuelve esto.

Desde ya, gracias y saludos.

ecfisa
30-08-2010, 08:05:44
Hola r1d2m3.

No sé si es lo que estás buscando, pero hice una prueba muy simple con este código y parece funcionar ok.

procedure TForm1.Button1Click(Sender: TObject);
begin
with ActionList1 do
Actions[Random(ActionCount)].OnExecute(Sender);
// ó de otra forma
// ActionList1.Actions[0].OnExecute(Sender);
// ...
// ActionList1.Actions[ActionList1.ActionCount-1].OnExecute(Sender);
end;


Un índice [0] está haciendo referencia al primer TAction y [ActionCount -1] al último.
También es cierto, que es más fácil llamar directamente al nombre del procedimiento asociado...

Saludos :)

r1d2m3
30-08-2010, 15:04:39
Hola ecfisa, gracias por tu respuesta, mirando tu post y recurriendo un poquito a prueba y error, pude resolver lo que necesitaba con la siguiente línea de código

rvActionsResource.rvActionSaveAs1.Execute


Saludos.

movorack
30-08-2010, 15:55:01
No es necesario llamar al ActionList... todas las acciones creadas en el action list quedan registradas en el formulario/datamodule...


TForm1 = class(TForm)
ActionList1: TActionList;
ActnAdd: TAction;
procedure ActnAddExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;


entonces puedo llamarlas directamente.

ActnAdd.Execute