Fórum Alterar cor da fonte #377357
10/05/2010
0
José Silva.
Curtir tópico
+ 0Posts
11/05/2010
Wilson Junior
procedure AlterarCorFonteLabel(ComponentePai: TWinControl; Cor: TColor); var x: integer; begin for x := 0 to ComponentePai.ComponentCount - 1 do begin if ComponentePai.Components[x] is TLabel then TLabel(ComponentePai.Components[x]).Font.Color := Cor ; end; end;
Espero ter colaborado.
Gostei + 0
11/05/2010
José Silva.
lehapan, obrigado pela resposta, mas faltou explicar no meu
post anterior que nos diversos labels dispostos no form, alguns labels estão no
proprio form e outros no panel.
como
fazer o delphi entender que os labels dispostos no form e tambem os labels
dispostos no panel, mude de cor, todos de um só vez, sem tem que referenciar,
que estão no form e tambem refenciar que estão no panel.
não
sei se fui bem claro na minha explicação, se deu pra entender que o componente
tem que saber onde esta localizado, seja panel, form, group ou outro componente
que aceita inserir componente dentro dele
Gostei + 0
11/05/2010
Wilson Junior
AlterarCorFonteLabel( SeuForm, clBlue ); procedure AlterarCorFonteLabel(ComponentePai: TWinControl; Cor: TColor); var x: integer; begin for x := 0 to ComponentePai.ComponentCount - 1 do begin if ComponentePai.Components[x] is TLabel then TLabel(ComponentePai.Components[x]).Font.Color := Cor else if ComponentePai.Components[x] is TWinControl then AlterarCorFonteLabel( TWinControl(ComponentePai.Components[x]), Cor ) ; ; end; end;
Espero ter colaborado.
Gostei + 0
11/05/2010
José Silva.
Suponhamos que tenho uma aplicação, e nessa aplicação e composta de 1 Form, dois panels e seis buttons. No form (azul) eu tenho 2 buttons No panel1 (verde)eu tenho 2 buttons No panel2 (amarelo) eu tenho 2 buttons Com um só comando eu pudesse colocar as cores dos Buttons, conforme o objeto em que estão colocados, sem referenciar o mesmo, ou seja 2 Buttons azuis, 2 Buttons verdes e 2 Buttons amarelos. Como faço para que os Buttons reconheçam onde estão colocados.
Já vi que tem comando FOR, WHILE, SELF, AOWNER e outros, como combinar tais comando para conseguir o resultado esperado (Talvez no Delphi não é possível fazer).
Conto com a boa vontade e interesse em vocês mais experientes possam passar para nos principiantes
Gostei + 0
11/05/2010
Wilson Junior
Gostei + 0
11/05/2010
José Silva.
Isso Mesmo.É possível fazer isto em um só comando??
Gostei + 0
12/05/2010
José Silva.
UpÉ estou vendo que é mais difícil do que estava pensando
Gostei + 0
12/05/2010
Alan Souza
procedure AlterarCorFonteLabel(ComponentePai: TWinControl);var x: integer;begin for x := 0 to ComponentePai.ComponentCount - 1 do begin if ComponentePai.Components[x] is TLabel then TLabel(ComponentePai.Components[x]).Font.Color := TWinControl(ComponentePai).Color else if ComponentePai.Components[x] is TWinControl then AlterarCorFonteLabel( TWinControl(ComponentePai.Components[x])) ; ; end;end;
não testei, mas acho que por ai já dá pra ter uma base
Gostei + 0
12/05/2010
Carlos Mazzi
Gostei + 0
13/05/2010
José Silva.
Gostei + 0
13/05/2010
José Silva.
obrigado pela resposta, mas no codigo abaixo ele não reconhe .Color em destaque
begin
if
ComponentePai.Components[x] is TLabel then
TLabel(ComponentePai.Components[x]).Font.Color
:= TWinControl(ComponentePai).Color
Else
Acho que falta mais alguma coisa
Gostei + 0
13/05/2010
Alan Souza
TControl(ComponentePai).Color;
Gostei + 0
14/05/2010
José Silva.
alanps, ainda não reconheceu.
Gostei + 0
14/05/2010
José Silva.
integer, pois a cor está em hexadecimal e a cor das fontes dos componentes
estão em integer, isso que eu ainda não achei o caminho para fazer.
Exemplo :
Font.Color = 4259584
Panel.Color=$0040FF00
Sera que não é isso???
Gostei + 0
14/05/2010
Emerson Nascimento
TColorControl = class(TWinControl)
public
property Color;
end;
(você pode colocar imediatamente antes da declaração da classe do seu form.)
daí sua rotina pode ser assim:
procedure TForm12.AlteraCorFonteLabel(ComponentePai: TWinControl);
var
x: integer;
begin
for x := 0 to ComponentePai.ControlCount - 1 do
if ComponentePai.Controls[x] is TLabel then
TLabel(ComponentePai.Controls[x]).Font.Color := TColorControl(ComponentePai).Color
else
if ComponentePai.Controls[x] is TWinControl then
AlteraCorFonteLabel(TWinControl(ComponentePai.Controls[x]));
end;
e, para executar:
procedure TForm12.Button1Click(Sender: TObject);
begin
AlteraCorFonteLabel(Panel1);
end;
lembrando que a função de troca de cores é recursiva, e se houver outros contâiners dentro do painel, eles também serão varridos e terão seus labels trocados (para a mesma cor do contâiner).
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)