Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rcdmartins

Forms Dinamicos herdados e com Constructor

Recommended Posts

Olá amigos, li diversos artigos sobre a criação dinamica de formulários, porém nenhum artigo não se aplicou ao meu caso.

Imaginem que tenho 1 Form TFormPesquisa que é herdado de TFormPadrao que por sua vez é herdado da Classe TForm.

Baseado nisso eu tenho os TFormPesquisaAgente, TFormPesquisaProduto, TFormPesquisaEndereco, etc., todos

herdeiros da classe TFormPesquisa.

No CREATE da Classe TFormPesquisa eu tenho un CONSTRUCTOR que recebe alguns parametros como Nome do Formulario,

Dataset, Status da Transação, etc.

 

Fazendo a chamada Normal funciona perfeitamente.

Exemplo =>

Try

FormPesquisaCliente := TFormPesquisaCliente.Create(Aplication, "Pesquisa de Cliente", sdsCliente, False, etc);

FormPesquisaCliente.ShowModal;

Finally

Freeandnil(FormPesquisaCliente);

End;

 

O problema é que queria fazer uma procedure ou function para fazer essa chamada para todos, porém não estou conseguindo.

 

A Chamada ficaria assim:

prc_CriaFormulario_Pesquisa(TFormPesquisaCliente, "Pesquisa de Cliente", sdsCliente, False, etc);

 

Alguém tem algo semelhante que possa me dar o caminho das pedras?

 

Obrigado

 

Reinaldo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá reinaldo,

 

fiz um teste rapido aqui, acredito que o caminho é por ai... mais algumas adaptações e creio que fará o que voce precisa...

 

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
	Button1: TButton;
	procedure criaForm(const form: TComponentClass);
	procedure Button1Click(Sender: TObject);
  private
	{ Private declarations }
  public

  end;

var
  Form1: TForm1;

implementation

uses Unit3;

{$R *.dfm}

procedure TForm1.criaForm(const form: TComponentClass);
begin
  try
   Application.CreateForm(form,form3);
   form3.ShowModal;
  finally
	FreeAndNil(form3);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  criaForm(TForm3);
end;

end.

espero ter ajudado

 

Sandro Ramos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá reinaldo,

fiz um teste rapido aqui, acredito que o caminho é por ai... mais algumas adaptações e creio que fará o que voce precisa...

unit Unit1;

interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
	Button1: TButton;
	procedure criaForm(const form: TComponentClass);
	procedure Button1Click(Sender: TObject);
  private
	{ Private declarations }
  public
  end;

var
  Form1: TForm1;

implementation
uses Unit3;

{$R *.dfm}

procedure TForm1.criaForm(const form: TComponentClass);
begin
  try
   Application.CreateForm(form,form3);
	 form3.ShowModal;
  finally
	 FreeAndNil(form3);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  criaForm(TForm3);
end;

end.

espero ter ajudado

 

Sandro Ramos

Olá Sandro, fiz um teste aqui, porém acontece o seguinte:

 

Se eu tento colocar os parametros do Constructor no Create(Form, Param1, Param2, Param3, etc)

Dá erro na funcão falando que tem parametros a mais.

 

Se eu não os coloco os parametros do construtor, o form herdado é criado normalmente, porém sem carregar as definições para o Constructor.

 

Vou fazer mais alguns testes aqui.

 

Muito Obrigado.

 

Reinaldo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.