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]