Componente a partir de uma string
Gostaria de saber se é possível criar um componente a partir de uma string onde eu teria por exemplo ´TEdit´, ´TDBGrid´, para poder criar um formulário em tempo de execução me baseando em uma tabela onde eu informo que tipo de componente representará cada campo.
Gabriel Ferrarini
Curtidas 0
Respostas
Afarias
25/10/2004
Vc pode usar a função [b:bd9010df10]FindClass[/b:bd9010df10]
ex::
Neste exemplo ClasseObjeto deve ser uma classe derivada de TControl (TButton, TEdit, etc...)
Para usar a função FindClass as classes q se deseja trabalhar devem estar previamente Registradas. Para isso vc usa a função RegisterClasses, ex:
T+
ex::
procedure TForm1.CriarObjeto(ClasseObjeto: string);
var
Classe: TControlClass;
Objeto: TControl;
begin
Classe := TControlClass(FindClass(ClasseObjeto));
Objeto := Classe.Create(Self);
Objeto.Parent := Self;
{...}
end;
Neste exemplo ClasseObjeto deve ser uma classe derivada de TControl (TButton, TEdit, etc...)
Para usar a função FindClass as classes q se deseja trabalhar devem estar previamente Registradas. Para isso vc usa a função RegisterClasses, ex:
initialization RegisterClasses([TButton, TEdit, TPanel]); finalization UnRegisterClasses([TButton, TEdit, TPanel]);
T+
GOSTEI 0
Gabriel Ferrarini
25/10/2004
Cara... valeu... era isso mesmo.
Só gostaria de uma explicaçãozinha sobre a linha:
Só gostaria de uma explicaçãozinha sobre a linha:
Classe := TControlClass(FindClass(Nome));
GOSTEI 0
Gabriel Ferrarini
25/10/2004
Vixi, acho que deu bosta...
Agora tá dando internal error SY424.
Sabe o que é?
Agora tá dando internal error SY424.
Sabe o que é?
GOSTEI 0
Afarias
25/10/2004
|Classe := TControlClass(FindClass(Nome));
1) FindClass retorna a classe pelo nome contido na variável Nome
2) Como o retorno da função é TPersistentClass, é realizado um TypeCast para TControlClass
|Vixi, acho que deu bosta...
|Agora tá dando internal error SY424.
Erros internos não tem exatamente um motivo -- a Borland recomenda q estes erros sejam enviados para ´investigação´ (provavelmente algum bug)
T+
1) FindClass retorna a classe pelo nome contido na variável Nome
2) Como o retorno da função é TPersistentClass, é realizado um TypeCast para TControlClass
|Vixi, acho que deu bosta...
|Agora tá dando internal error SY424.
Erros internos não tem exatamente um motivo -- a Borland recomenda q estes erros sejam enviados para ´investigação´ (provavelmente algum bug)
T+
GOSTEI 0
Gabriel Ferrarini
25/10/2004
Então se eu chamar um classe como uma função passando como parâmetro outra classe é feito um typecast??
Se for aprendi mais uma :D
Se for aprendi mais uma :D
GOSTEI 0
Afarias
25/10/2004
|Então se eu chamar um classe como uma função passando como
|parâmetro outra classe é feito um typecast??
+/- isso... :D
Isto não é só para classes mas para qualquer tipo.
T+
|parâmetro outra classe é feito um typecast??
+/- isso... :D
Isto não é só para classes mas para qualquer tipo.
T+
GOSTEI 0