Form1:

Função CriaForm, e não é necessario incluir as units dos forms a serem 
criados na clausula uses.


Nos forms q irao ser criados:

Ex:

Form2

initialization
     RegisterClass( TForm2);

     finalization
    UnRegisterClass( TForm2);


Entao no Click do botaum no Form1 coloca CriaForm('TForm2').


entendeu?

JB

--- Em delphi-br@yahoogrupos.com.br, alessandra porto 
<[EMAIL PROTECTED]> escreveu
>
> 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
> 
> > jb@
> 
> > 
> 
> > --- 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