ActionList para cada Formulário
Pessoal, estou com um dúvida cruel, eu particularmente utilizo forms MDI e MDIChild em minhas aplicações, o que eu estou tentando fazer é o seguinte, para cada formulário MDIChild (filho) utilizar um ActionList com as ações como : Novo, Salvar, Excluir, Imprimir.
Sendo que ao abrir um formulário filho o actionlist do mesmo ative os controles do menu e da toollbar com as suas respectivas ações.
Tem como, algum exemplo, abraço a todos.
Sendo que ao abrir um formulário filho o actionlist do mesmo ative os controles do menu e da toollbar com as suas respectivas ações.
Tem como, algum exemplo, abraço a todos.
Onhide86
Curtidas 0
Respostas
Pestana_
14/11/2007
não sei se entendi, mas se você quer que o menu e o botão do tollbar tenha a mesma funcionalidade, então é só associar a propriedade Action do menu e do botão do tollbar para o ActionList desejado.
se não for isso poste aqui novamente,
Pestana.
se não for isso poste aqui novamente,
Pestana.
GOSTEI 0
Onhide86
14/11/2007
Sim, isso eu sei, mas o que acontece é que cada Form Filho vai ter um componente ActionLIst com os comandos Novo, Salvar, Excluir, Imprmir, etc, mas o que acontece é que só o Form principal o ´MDI´ vai ter o ToolBar e o Menu, então o que eu quero saber é como eu faço, para quando eu abrir um Form Filho ele ative esses botões na toolbar e menu do Form Pai com os Actions Do Filho.
GOSTEI 0
Fabiano Góes
14/11/2007
Sim, isso eu sei, mas o que acontece é que cada Form Filho vai ter um componente ActionLIst com os comandos Novo, Salvar, Excluir, Imprmir, etc, mas o que acontece é que só o Form principal o ´MDI´ vai ter o ToolBar e o Menu, então o que eu quero saber é como eu faço, para quando eu abrir um Form Filho ele ative esses botões na toolbar e menu do Form Pai com os Actions Do Filho.
bom, a idéia que tenho é a seguinte:
criar uma classe em uma unit assim:
unit UActions; interface uses Classes; type TMyActions = class public procedure New; virtual; abstract; procedure Edit; virtual; abstract; procedure Cancel; virtual; abstract; procedure Delete; virtual; abstract; procedure Save; virtual; abstract; procedure Search; virtual; abstract; end; implementation end.
no form principal crio uma variavel publica:
public Actions: TMyActions; end;
nas actions do form principal seto os eventos da classe:
procedure TfrmMain.actEditExecute(Sender: TObject); begin Actions.Edit; end; procedure TfrmMain.actCancelExecute(Sender: TObject); begin Actions.Cancel; end; procedure TfrmMain.actDeleteExecute(Sender: TObject); begin Actions.Delete; end; procedure TfrmMain.actSaveExecute(Sender: TObject); begin Actions.Save; end; procedure TfrmMain.actSearchExecute(Sender: TObject); begin Actions.Search; end;
lembrando que os eventos não foram implementados ainda porque são Virtual; abstract; serão implementados conforme ações dos forms filhos.
Nos forms filhos crio outra classe descendente da TMyActions:
TActionsCustomer = class(TMyActions) public procedure New; override; procedure Edit; override; procedure Cancel; override; procedure Delete; override; procedure Save; override; procedure Search; override; end;
ai no form filho implemento os metodos: New, Edit ...
crio uma variavel do tipo da nova classe: Actions: TActionsCustomer;
no evento OnCreate do form filho crio a instancia do Objeto:
procedure TfrmCustomer.FormCreate(Sender: TObject); begin Actions := TActionsCustomer.Create; end;
no evento OnActive do form filho passo uma referencia do Objeto para o form Pai:
procedure TfrmCustomer.FormActivate(Sender: TObject); begin frmMain.Actions := Actions; end;
bom não sei dizer se essa seria a melhor maneira de fazer isso, quem quizer dar outras idéias fica a vontade.
acho que é meio confuso mais funciona !!!!
abraço !!!
GOSTEI 0
Onhide86
14/11/2007
Parece ser interessante este metodo, você tem algum exemplo assim para eu dar um estudada, te agradeço;
Se tiver mande para este e-mail: edinho_faccin@hotmail.com
Se tiver mande para este e-mail: edinho_faccin@hotmail.com
GOSTEI 0
Fabiano Góes
14/11/2007
Parece ser interessante este metodo, você tem algum exemplo assim para eu dar um estudada, te agradeço;
Se tiver mande para este e-mail: edinho_faccin@hotmail.com
eu criei um sisteminha de exemplo pra postar, assim que chegar em casa te mando, ai vc teste e posta se resolve ou não pra que o post não fique em aberto ok ?
abraço !!!
GOSTEI 0
Onhide86
14/11/2007
ok, fico no aguardo, abraço.
GOSTEI 0