Array
(
)

Transformar var string em TComponentClass

Anteromendes
   - 02 out 2004

Boa noite colegas,

Como faço para transformação uma variavel string em tcomponetclass.

A intenção é poder chamar um formulario atraves dessa variavel string.

Desde já agradeço a atenção.

Antero Mendes


Afarias
   - 02 out 2004

Vc deve usar o mecanismo de stream do Delphi. Usando a função FindClass para pegar a classe do Form q deseja criar, ex::


#Código


procedure TForm1.Button1Click(Sender: TObject);
var
OutroFormClass: TFormClass;
OutroForm: TForm;
begin

// pegue a classe do form
OutroFormClass := TFormClass(FindClass(´TForm2´));

// crie e use o form como desejar, ex:
Application.CreateForm(OutroFormClass, OutroForm);
OutroForm.Show;

end;



Bom, mas para q isso funcione, a classe TForm2 deve estar registrada, para tanto, adicione ao final da unidade onde está declarada TForm2 o seginte código::

#Código

{... código da unit ...}

initialization
RegisterClass(TForm2);

finalization
UnRegisterClass(TForm2);

end.




T+


Anteromendes
   - 04 out 2004

Companheiro,

Realizei o teste com as informações que me enviastes, contudo ocorreu um erro dizendo ´class not found´.

fiz dessa maneira :

#Código


procedure Tform1.chama_form(aform : string);
var
tela : TFormClass;
xform : TForm;
begin
tela := TFormClass(FindClass(´aform´));
Application.CreateForm(tela, xform);
xform.ShowModal;
xform.Free;
end;
.....
chama_form(´tform2´)


Registrei a classe (Tform2) no form2 e ainda persiste o erro. Não sei se está faltando alguma coisa. O form2 está para ser criado em tempo de execução.

[]s,


Afarias
   - 04 out 2004

Vc está colocando a variável entre aspas!!

tela := TFormClass(FindClass(´aform´));

quando tem q ser::

tela := TFormClass(FindClass(aform));


sem as aspas (já q aform é uma variável e não uma ´constante string´)


T+


Anteromendes
   - 04 out 2004

Companheiro,

Nota dez amigo, realmente eu coloquei de forma errada.

Muito obrigado pela ajuda, quando precisar estamos ai !

Atenciosamente,