Carregar classe do tipo TPersistent dinâmicamente
Olá,
é o seguinte eu já vi que é possível carregar um formulário dinâmicamente usando algo parecido com:
mas agora eu estou precisando carregar dinâmicamente uma simples unit do tipo TPersistent.
Alguém pode me ajudar?
Obrigado
Andeson Rodrigues
é 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
Curtidas 0
Respostas
Giordanocwb
28/11/2007
Para carregar uma classe do tipo TPersistent dinamicamente, é mais simples que o formulário, basta:
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!!!
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
28/11/2007
Obrigado giordanocwb
Olha estou com uma dúvida.
Quando eu mando criar um form dinâmicamente
ele não passa pelo constructor da classe em questão.
Você sabe me dizer o porque?
Obrigado
Anderson Rodrigues
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
28/11/2007
Verifique se você colocou a diretiva override no constructor do formulário.
T+
T+
GOSTEI 0
Anderson.uem
28/11/2007
Obrigado Giordano
GOSTEI 0