Variar nome do Form no CreateForm

20/03/2006

0

[b:363afe73e2]Bom dia Pessoal,
É o seguinte tenho uma rotina para montar dinamicamente meu menu, porém não estou conseguindo variar o nome do Form.

Fiz a seguinte rotina:
procedure CriarForm(frmClass: TFormClass; out NewObj);
begin
try
TForm(NewObj) := FrmClass.create(Self);
TForm(NewObj).ShowModal;
finally
FreeAndNil(NewObj);
end;
end;

E chamo o método da seguinte forma:
CriaForm(adoMenu.FieldByName(´CD_TPROGRAMA´).AsVariant, adoMenu.FieldByName(´CD_PROGRAMA´).AsVariant);

Porém me retorna o seguinte erro:
Incompatible types ´TFormClass´ and ´Variant´.

E se eu mudar de AsVariant para AsString ele da o mesmo erro.

Como eu faço essa conversão ??

Valeu
SPLASH[/b:363afe73e2]


Splash

Splash

Responder

Posts

20/03/2006

Rjun

O erro acontece por que sua procedure espera um TFormClass e você está passando um tipo Variante ou String.

Veja esse [url=http://forum.clubedelphi.net/viewtopic.php?t=68054]tópico[/url]. Acho que pode lhe ser útil.


Responder

20/03/2006

Splash

[b:b1743b2415]Valeu Rogério pela resposta.
Cara tentei fazer, mas não deu muito certo não.
Alguém ja fez algo do tipo e poderia me ajudar ?

Encontrei uma forma de fazer, porem eu preciso deixar todos os forms no Auto-Create Forms ..... se não não funciona, porém quando eu chamo o form principal, ele instancia todos os forms, ele mostra todos os forms ..... ai não da né ....

Sera que alguem poderia me dar uma forcinha ...

Valeu a todos
Beto[/b:b1743b2415]


--------------------------------------------------------------------------------

O erro acontece por que sua procedure espera um TFormClass e você está passando um tipo Variante ou String.

Veja esse tópico. Acho que pode lhe ser útil.
_________________
Rogério Jun


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar