identificando Componente

Delphi

27/06/2005

Caros amigos do clube do delphi,

tenho a seguinte situação:
altero a cor das dos labels de minha aplicação ao carregar o programa, atribui na propriedade Tag valores para diferenciar os que ficarão de uma cor e os outros com outra, tipo: os que estiverem com Tag = 1 ficarão verde e os que estiverem com tag = 0 ficaram vermelhos. Gostaria de saber como faço uma function ou procedure para alterar a propriedade font.color dos labels em tempo de execução uma vez que eu não sei qual o nome dos labels.

Tentei fazer assim:
For i := 0 to FPrincipal.ComponentCount - 1 do
if (FPrincipal.Components[i] is TLabel) and (FPrincipal.Components[i].Tag = 1) then
FPrincipal.Components[i].Font.Color := ClYellow
else
FPrincipal.Components[i].Font.Color := ClRed

O problema é quando tento atribuir a propriedade Font.color o delphi não aceita pois ele não sabe que o componente tem a determinada propriedade.

Espero que tenha sido claro, e agradeço a quem poder me ajudar

Nilson Oliveira
Belém - PA


Nilsonoliveiratec

Nilsonoliveiratec

Curtidas 0

Respostas

Caninha51

Caninha51

27/06/2005

Faltou só fazer um typecast! :)

For i := 0 to FPrincipal.ComponentCount - 1 do 
if (FPrincipal.Components[i] is TLabel) and (FPrincipal.Components[i].Tag = 1) then 
TLabel(FPrincipal.Components[i]).Font.Color := ClYellow 
else 
TLabel(FPrincipal.Components[i]).Font.Color := ClRed 


Falow

caninha51


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

27/06/2005

uma pequena alteração para evitar possível problemas:

for i := 0 to FPrincipal.ComponentCount - 1 do
  if (FPrincipal.Components[i] is TLabel) then
  begin
    if FPrincipal.Components[i].Tag = 1 
    then TLabel(FPrincipal.Components[i]).Font.Color := ClYellow
    else TLabel(FPrincipal.Components[i]).Font.Color := ClRed;
  end;



GOSTEI 0
Caninha51

Caninha51

27/06/2005

Corretíssimo emerson, pois daquela forma ele não sendo label iria entrar no senão e ia dar pau no typecast.

Na verdade nem prestei atenção na logica dele, vi apenas que estava faltando o typecast! :)


Valew!

caninha51


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

27/06/2005

...tipo: os que estiverem com Tag = 1 ficarão [b:81e3a40f78]verde[/b:81e3a40f78] e os que estiverem com tag = 0 ficaram vermelhos... [..] Tentei fazer assim: For i := 0 to FPrincipal.ComponentCount - 1 do if (FPrincipal.Components[i] is TLabel) and (FPrincipal.Components[i].Tag = 1) then FPrincipal.Components[i].Font.Color := [b:81e3a40f78]ClYellow[/b:81e3a40f78] else FPrincipal.Components[i].Font.Color := ClRed [..]


nilson, verde é clGreen e não clYellow

:D


GOSTEI 0
Caninha51

Caninha51

27/06/2005

nilson, verde é clGreen e não clYellow :D


Vai ver ele eh dautônico!heheh...

:lol: :lol:


GOSTEI 0
POSTAR