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



Responder a