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

 



Responder a