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] >