Tipo metaclass no Delphi
Olá,
gostaria de entender o recurso de metaclass do Delphi, qual a real utilidade desse recurso. Acredito que um tipo metaclass é um ponteiro para a estrutura de uma classe igual ao codigo que segue:
TQualquer = class of TMinhaClass;
TMinhaClass = class
...
end;
a variável TQualquer esta apontando para a estrutura da classe TMinhaClass, quando este tipo de variável vai ser útil para mim?
gostaria de entender o recurso de metaclass do Delphi, qual a real utilidade desse recurso. Acredito que um tipo metaclass é um ponteiro para a estrutura de uma classe igual ao codigo que segue:
TQualquer = class of TMinhaClass;
TMinhaClass = class
...
end;
a variável TQualquer esta apontando para a estrutura da classe TMinhaClass, quando este tipo de variável vai ser útil para mim?
Rogério Zek
Curtidas 0
Melhor post
Hélio Devmedia
01/08/2017
A funcionalidade deste recurso é trabalhar com tipos como se fossem objetos, e criar rotinas que deixem o código mais Orientado a Objeto ainda. Existe um vídeo de minha autoria aqui no portal que explica exatamente o que fazer com o TQualquer:
https://www.devmedia.com.br/curso/curso-class-of-na-pratica-em-delphi/1457
Observe que no vídeo eu fiz uma função que permite instanciar dinamicamente um formulário e passar para ele um datamodule também instanciado
os parametros são do tipo metaclass, ou seja eu não vou passar uma instancia, eu vou passar um tipo, e eles serão tratados como tal para criar a instancia dentro das variáeis;
Espero que eu tenha ajudado.
Se ajudei, não deixe de dar o joinha.
https://www.devmedia.com.br/curso/curso-class-of-na-pratica-em-delphi/1457
Observe que no vídeo eu fiz uma função que permite instanciar dinamicamente um formulário e passar para ele um datamodule também instanciado
procedure TFrmPrincipal.criaFormularioMovimentacao(form: TFrmMovimentacaoClass; datamodule: TDMMovimentacaoClass); begin FDMMovimentacao :=datamodule.Create(self); FFrmMovimentacao :=form.Create(self,FDMMovimentacao); FFrmMovimentacao.ShowModal; FreeAndNil(FFrmMovimentacao); FreeAndNil(FDMMovimentacao); end;
os parametros são do tipo metaclass, ou seja eu não vou passar uma instancia, eu vou passar um tipo, e eles serão tratados como tal para criar a instancia dentro das variáeis;
Espero que eu tenha ajudado.
Se ajudei, não deixe de dar o joinha.
GOSTEI 1