GARANTIR DESCONTO

Fórum DataModule criado via código #390270

10/11/2010

0

Tenho a seguinte situação em um sistema: para cada cadastro (pessoa, grupo, etc) tenho um formulario e um datamodule, por exemplo: cadastro de pessoas: frmPessoa (formulario) e dtmdPessoa (datamodule) O datamodule deve ser criado junto com o formulario. Criei um formulario modelo a partir do qual crio outros por herança. Esses são utilizados em cadastros (pessoa, grupo, etc). No formulario modelo o construtor foi sobrecarregado, tendo como segundo parâmetro a classe do datamodule a ser criado, conforme abaixo.
Formulário Modelo
----------------------- type
  TfrmModelo = class(TForm)
  ...   public
    dm: TDataModule;
    constructor Create(AOwner: TComponent; dtmd: TComponentClass); overload;
  ...
implementention ... constructor TfrmModelo.Create(AOwner: TComponent; dtmd: TComponentClass);
begin
   dm := dtmd.Create(Application) as TDataModule;
   inherited Create(AOwner);
end;
procedure TfrmModelo.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   ...    dm.Free;
   Action := caFree;
end;  
No formulário principal (menu) do sistema crio o formulário de um cadastro passando a classe do datamodule como parâmetro. O datamodule será então criado no construtor sobrecarregado, acima. Formulário Principal (Menu)
---------------------------------- procedure TfrmMenu.actnPessoaExecute(Sender: TObject);
begin
   frmPessoa := TfrmPessoa.Create(self, TdtmdPessoa);
   frmPessoa.Show;
end;   Como foi dito acima o formulario de cadastro de pessoas é herardo do formulário modelo. Formulário Pessoa
----------------------- type
  TfrmPessoa = class(TfrmModelo)
  ...   Observe que na criação do frmPessoa é utilizado o método Show, assim consigo exibir mais de um form ao mesmo tempo. Entretanto estou tendo um problema exatamente aí. Quando abro dois forms do mesmo cadastro, por exemplo, frmPessoa, qualquer movimentação nos registros feito em um deles é replicada no outro. Mas não queria que isto acontecesse pois preciso de dois forms iguais e independentes. O problema deve estar na criação do datamodule mas não consigo achar o erro. Esse estrutura de formulario modelo, um datamodule para cada tela de cadastro, deve ser mantida.   Alguém teria um idéia de como resolver isso ?    
Luiz Bertolazzi

Luiz Bertolazzi

Responder

Posts

11/11/2010

Eduardo Marcolongo

Luiz, boa tarde.
Desculpe-me a curiosidade, porque um data module por tela ? o objetivo do data module é justamente vc centralizar todas suas tabelas. Eu vejo assim: centralizar as tables em um data module e dar um uses nele, ou se vc vai criar um data module para cada tela de cadastro, porque não colocar as tabelas na tela de cadastro ?
Responder

Gostei + 0

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

Aceitar