joão tive  dificuldade  ai
não consegui chamar o form pelo buton click
veja  o  codigo  abaixo

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
    procedure CriaForm(const NomeForm: string);
  end;

var
  Form1: TForm1;

implementation

uses Unit2;


{$R *.dfm}



initialization
     RegisterClass( TForm1);

     finalization
    UnRegisterClass( TForm1);


procedure TForm1.CriaForm(const NomeForm: string);
var
TClasse : TPersistentClass;
Form : TForm;
begin
Form := nil;

TClasse := GetClass(NomeForm) ;

if (TClasse <> nil) {and TClasse.InheritsFro m(TForm)} then
Form := TFormClass(TClasse) .Create(self) ;



procedure TForm1.Button1Click(Sender: TObject);

begin

 TClasse := GetClass(Form2) ;

if (TClasse <> nil) {and TClasse.InheritsFro m(TForm)} then
   Form := TFormClass(TClasse) .Create(self) ;
end;

end.

não é necessario testar se o form esta registrado


obrigada pela paciencia


//////////////////////////////
--- Em sex, 19/9/08, José Benedito <[EMAIL PROTECTED]> escreveu:
De: José Benedito <[EMAIL PROTECTED]>
Assunto: [delphi-br] Re: ajuda criar formulario
Para: delphi-br@yahoogrupos.com.br
Data: Sexta-feira, 19 de Setembro de 2008, 8:53










    
            _('Form não registrado!' )



_() eh a função do gnugettext para controle de idioma das aplicações.



inteh



--- Em [EMAIL PROTECTED] os.com.br, José Benedito <josebenedito@ ...> 

escreveu

>

> tem que ser como string? para isso registre a classe na seção 

> initialization do form:

> 

> initialization

>   RegisterClass( TForm1);

> 

> finalization

>   UnRegisterClass( TForm1);

> 

> então no formulario que irá chamar vc nao precisa declarar no uses a 

> unit do form :) aí vc chama dessa maneira.

> 

> procedure TfrmPrincipal. CriaForm( const NomeForm: string);

> var

>   TClasse : TPersistentClass;

>   Form : TForm;

> begin

>   Form := nil;

> 

>   TClasse := GetClass(NomeForm) ;

> 

>   if (TClasse <> nil) {and TClasse.InheritsFro m(TForm)} then

>     Form := TFormClass(TClasse) .Create(self) ;

> 

>   if not Assigned(Form) then

>     MessageDlg(_ ('Form não registrado!' ), mtError, [mbOK], 0)

>   else

>   begin

>     Form.Name := Self.Name + '_' + FormatFloat( '00', ComponentCount 

+ 

> 1);

>     Form.Caption := Caption;// + ' ' + FormatFloat( '00', 

ComponentCount + 1);

> 

>     Form.Show;

>   end;

> end;

> 

> espero ter ajudado, qq coisa estamos aih.

> 

> JB

> Software Developer

> [EMAIL PROTECTED]

> 

> --- Em [EMAIL PROTECTED] os.com.br, alessandra porto 

> <alessandraporto11@ > escreveu

> >

> > 

> > 

> >   Chamo meu formularios  assim:

> > 

> > 

> >     if FmAgenda = nil then

> >       begin

> >          Application. CreateForm( TFmAgenda, FmAgenda) ;

> >          FmAgenda.ShowModal;

> >       end;

> > 

> > 

> >    A ideia e criar uma variavel para informar o nome do formulario 

> que 

> > sera aberto naquele momento

> > 

> > 

> > var

> > formulario:string;

> > 

> > 

> > formulario:= teste;

> > 

> >     if teste = nil then

> >       begin

> >          Application. CreateForm( T+teste,teste) ;

> >          teste.ShowModal;

> >       end;

> > 

> > com string dá erro  como posso fazer isso?

> > 

> > 

> > 

> > fico agradecida aos colegas que ajudarem

> > 

> > 

> >       Novos endereços, o Yahoo! que você conhece. Crie um email 

novo 

> com a sua cara @ymail.com ou @rocketmail. com.

> > http://br.new. mail.yahoo. com/addresses

> > 

> > [As partes desta mensagem que não continham texto foram removidas]

> >

>




      

    
    
        
         
        
        








        


        
        


      Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua 
cara @ymail.com ou @rocketmail.com.
http://br.new.mail.yahoo.com/addresses

[As partes desta mensagem que não continham texto foram removidas]

Responder a