Fórum Converte String em Componente #245349

02/08/2004

0

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

Arsnet

Responder

Posts

03/08/2004

Thomaz_prg

É 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:

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.


Responder

Gostei + 0

03/08/2004

Bon Jovi

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;




Responder

Gostei + 0

03/08/2004

Bon Jovi

: ) Mais um pouco no mesmo minuto! E ainda usando Label tb no exemplo!


Responder

Gostei + 0

03/08/2004

Arsnet

Valeu galera...

abraços


Responder

Gostei + 0

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

Aceitar