GARANTIR DESCONTO

Fórum Carregar classe do tipo TPersistent dinâmicamente #349826

28/11/2007

0

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

Responder

Posts

04/12/2007

Giordanocwb

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);



Responder

Gostei + 0

11/12/2007

Anderson.uem

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


Responder

Gostei + 0

11/12/2007

Giordanocwb

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

T+


Responder

Gostei + 0

21/12/2007

Anderson.uem

Obrigado Giordano


Responder

Gostei + 0

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

Aceitar