Fórum ActionList para cada Formulário #349025

14/11/2007

0

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.


Onhide86

Onhide86

Responder

Posts

15/11/2007

Pestana_

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.


Responder

Gostei + 0

15/11/2007

Onhide86

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.


Responder

Gostei + 0

16/11/2007

Fabiano Góes

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 !!!


Responder

Gostei + 0

16/11/2007

Onhide86

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


Responder

Gostei + 0

16/11/2007

Fabiano Góes

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 !!!


Responder

Gostei + 0

16/11/2007

Onhide86

ok, fico no aguardo, abraço.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar