Carregar classe do tipo TPersistent dinâmicamente

Delphi

28/11/2007

Olá,
é o seguinte eu já vi que é possível carregar um formulário dinâmicamente usando algo parecido com:

function CriarFormPeloNomeDaClasse(const ONomeDaClasse: TFormClass): TForm;
var
  Classe: TFormClass;
begin
  Classe := TFormClass(FindClass(ONomeDaClasse));
  Result := Classe.Create(Application);
end; 


mas agora eu estou precisando carregar dinâmicamente uma simples unit do tipo TPersistent.

Alguém pode me ajudar?

Obrigado
Andeson Rodrigues


Anderson.uem

Anderson.uem

Curtidas 0

Respostas

Giordanocwb

Giordanocwb

28/11/2007

Para carregar uma classe do tipo TPersistent dinamicamente, é mais simples que o formulário, basta:

var
  classe: TPersistentClass;
  objeto: TPersistent;
begin
  classe := FindClass(´TClassePersistente´);

  if Assigned(classe) then //se encontrou a classe
    objeto := classe.Create;
end;  


Detalhe, para que sua classe seja encontrada, você deve registrar a sua classe, o melhor lugar para fazer isso é no initialization da unit onde a sua classe se encontra. Não se esqueça de tirar o registro da classe no finalization ok!!!

initialization
  RegisterClass(TClassePersistente);
finalization
  UnRegisterClass(TClassePersistente);



GOSTEI 0
Anderson.uem

Anderson.uem

28/11/2007

Obrigado giordanocwb

Olha estou com uma dúvida.

Quando eu mando criar um form dinâmicamente

function CriarFormPeloNomeDaClasse(const ONomeDaClasse: TFormClass): TForm;
var
  Classe: TFormClass;
begin
  Classe := TFormClass(FindClass(ONomeDaClasse));
  Result := Classe.Create(Application);
end;


ele não passa pelo constructor da classe em questão.
Você sabe me dizer o porque?

Obrigado

Anderson Rodrigues


GOSTEI 0
Giordanocwb

Giordanocwb

28/11/2007

Verifique se você colocou a diretiva override no constructor do formulário.

T+


GOSTEI 0
Anderson.uem

Anderson.uem

28/11/2007

Obrigado Giordano


GOSTEI 0
POSTAR