Converte String em Componente
Alguem sabe como faço pra através de uma variavel string q contem o nome de um determinado componente eu acessar as propriedades de componente???
Arsnet
Curtidas 0
Respostas
Thomaz_prg
02/08/2004
É o seguinte, se o componente já estiver criado primeiro localiza-se o componente, para em seguida criar o objeto. Para isso, basta você declarar uma variavel com o tipo específico do objeto (TEdit, TLabel) ou uma variável do tipo TObject, que serve para quase todos, senão todos componentes. Bom seria mais ou menos assim:
Supondo que quero acessar o caption de um label que está no form1:
No exemplo acima, eu verifico a existência do componente, se o mesmo existir, faço com que a variável objeto que recebeu este componente, comporte-se com a forma desejada (no exemplo, como um label), e em seguida posso acessar qualquer uma das suas propriedades, como se estivesse utilizando o proprio componente.
Supondo que quero acessar o caption de um label que está no form1:
procedure TForm1.button1click( Sender:TObject ); var obj:TObject; begin obj:=FindComponent(´label1´); if obj=nil then showmessage(´Componente label1 não existe´) else showmessage( ´Caption de label1: ´+ (obj as TLabel).Caption ); end;
No exemplo acima, eu verifico a existência do componente, se o mesmo existir, faço com que a variável objeto que recebeu este componente, comporte-se com a forma desejada (no exemplo, como um label), e em seguida posso acessar qualquer uma das suas propriedades, como se estivesse utilizando o proprio componente.
GOSTEI 0
Bon Jovi
02/08/2004
Depende do caso. Ve se com FindComponent pode ajudar:
procedure TForm1.Teste(NomeComponente: string); var Componente: TComponent; begin Componente := Self.FindComponent(NomeComponente); if Assigned(Componente) then begin if Componente is TLabel then TLabel(Componente).Caption := ´Teste´; end; end; procedure TForm1.Button1Click(Sender: TObject); begin Teste(´Label1´); end;
GOSTEI 0
Bon Jovi
02/08/2004
: ) Mais um pouco no mesmo minuto! E ainda usando Label tb no exemplo!
GOSTEI 0
Arsnet
02/08/2004
Valeu galera...
abraços
abraços
GOSTEI 0