Rubem Coloquei a procedure na unit principal que ira criar os outros formularios, mas ao compilar os seguintes erros sao apresentados.
[Error] Incompatible types: 'TFormClass' and 'TPersistentClass' [Error] Undeclared identifier: 'TForm1' [Error] Unsatisfied forward or external declaration: 'TfrmMenuProtheus.InstanceForm' O que pode estar de errado. Att. _____________________________________ Tavares, Lúzio FUTURIZE Administração da Informação MSN Messenger: [EMAIL PROTECTED] Telefone.: +55 (28) 3522-8675 ----- Original Message ----- From: Rubem Nascimento da Rocha To: delphi-br@yahoogrupos.com.br Sent: Thursday, September 21, 2006 8:42 AM Subject: Re: [delphi-br] Criar um form a partir de uma variavel Vamos a alguns esclarecimentos: 1) O que o colega Emerson colocou como exemplo foi a criação de formulários a partir de classes de formulários, e não a partir de variáveis. Percebam que no código ilustrado, é passado como parâmetro para a rotina que cria formulários a classe de formulário a ser instanciada; 2) Para criar formulários a partir de um nome, é necessário que este nome seja o nome da classe de formulário a ser instanciada. Além disso, a unit da classe de formulário a ser instanciada precisa se registrar no mecanismo de stream da VCL para que esta possa ser encontrada pela função GetClass().. Isso pode ser feito colocando na seção 'initialization' da unit do formulário o seguinte código: initialization RegisterClass(TForm1); // supondo que na unit a classe de formulário se chame TForm1 E nos locais onde esta classe tiver que ser instanciada, pode ser usado o seguinte código: procedure InstanceForm(AFormClassName: String); var lClassForm: TFormClass; begin lClassForm := GetClass(AFormClassName); if Assigned(lClassForm) then with lClassForm.Create(Application) do try ShowModal finally Free end end; Sds. >From: "Tavares_Tavares" <[EMAIL PROTECTED]> >Reply-To: delphi-br@yahoogrupos.com.br >To: <delphi-br@yahoogrupos.com.br> >Subject: Re: [delphi-br] Criar um form a partir de uma variavel >Date: Thu, 21 Sep 2006 08:20:10 -0300 > >Bom dia! > >É quase isso. > >A rotina que chama a funcao deve ser assim: > >procedure TForm1.Button1Click(Sender: TObject); >var nomeform : String; ***Ou outro tipo de objeto que receba um nome em >forma de string >begin > criaform(nomeform); >end; > >Tavares > >----- Original Message ----- > From: Tavares_Tavares > To: delphi-br@yahoogrupos.com.br > Sent: Thursday, September 21, 2006 7:38 AM > Subject: Re: [delphi-br] Criar um form a partir de uma variavel > > > Bom dia a todos! > > Agradeco a ajuda. É isso mesmo que preciso. > Mas ainda preciso de mais uma ajuda. > Neste formulario existira botoes que devem executar uma rotina ao ser >clicado e esse botao vai ser cirado junto commo formulario, portanto, como >indicar no envento onclick do mesmo a procedure ou funcao que que ele tera >que executar? > > Tavares > ----- Original Message ----- > From: Emerson Cassio > To: delphi-br@yahoogrupos.com.br > Sent: Wednesday, September 20, 2006 9:18 PM > Subject: Re: [delphi-br] Criar um form a partir de uma variavel > > > Amigo por acaso é isso que está procurando? > > //////////////////////////////////////// > unit Unit1; > > interface > > uses > Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, >Forms, > Dialogs, unfuncoes, StdCtrls; > > type > TForm1 = class(TForm) > Button1: TButton; > Button2: TButton; > procedure Button1Click(Sender: TObject); > Procedure CriaForm (NomeForm: TFormClass); > procedure Button2Click(Sender: TObject); > private > { Private declarations } > public > { Public declarations } > end; > > var > Form1: TForm1; > > implementation > > uses unit2, unit3; > {$R *.dfm} > > Procedure TForm1.CriaForm (NomeForm: TFormClass); > Begin > Try > TForm (NomeForm) := NomeForm.Create(self); > TForm (NomeForm).ShowModal; > Finally > FreeAndNil(NomeForm); > End; // Try > end; // CriaForm > > procedure TForm1.Button1Click(Sender: TObject); > begin > criaform(TForm2); > end; > > procedure TForm1.Button2Click(Sender: TObject); > begin > criaform(TForm3); > end; > > end. > ////////////////////////////////////// > ----- Original Message ----- > From: Tavares_Tavares > To: delphi-br@yahoogrupos.com.br > Sent: Wednesday, September 20, 2006 3:14 PM > Subject: [delphi-br] Criar um form a partir de uma variavel > > > Boa tarde a todos. > > Preciso passar para uma procedure, como um parametro, uma variavel >contendo um nome de um novo form que a rotina deve abrir. > Alguem sabe como faco para que nessa rotina o delphi permita abrir o >formulario que é igual ao nome do conteudo da variavel? > Da forma que estou fazendo nao esta correto. > > Ex.: > var nomeform : TForm > Begin > Application.CreateForm( NomeForm, nomequalquer); > nomequalquer.BringToFront; > nomequalquer.ShowModal; > FreeAndNil(nomequalquer); > End; > > agradeco todo ajuda > > Tavares > > > [As partes desta mensagem que não continham texto foram removidas] > > > > __________ Informação do NOD32 IMON 1.1764 (20060920) __________ > > Esta mensagem foi verificada pelo NOD32 sistema antivírus > http://www.eset.com.br > > > [As partes desta mensagem que não continham texto foram removidas] > > > > __________ Informação do NOD32 1.1764 (20060920) __________ > > Esta mensagem foi verificada pelo NOD32 sistema antivírus. > part000.txt - esta OK > part001.htm - esta OK > > > http://www.eset.com.br > > > [As partes desta mensagem que não continham texto foram removidas] > > > > __________ Informação do NOD32 1.1764 (20060920) __________ > > Esta mensagem foi verificada pelo NOD32 sistema antivírus. > part000.txt - esta OK > part001.htm - esta OK > > > http://www.eset.com.br > > >[As partes desta mensagem que não continham texto foram removidas] > _________________________________________________________________ MSN Hotmail, o maior webmail do Brasil. http://www.hotmail.com __________ Informação do NOD32 1.1765 (20060920) __________ Esta mensagem foi verificada pelo NOD32 sistema antivírus. part000.txt - esta OK part001.htm - esta OK http://www.eset.com.br [As partes desta mensagem que não continham texto foram removidas] -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> <*> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages <*> Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html