Trocar propriedade color de todas as edit's da tela em tempo de execução.

Delphi

13/06/2010

Fala Galera...
Trabalho com Delphi7 e Herança de tela, a duvida é:
Tudo que mudo na tela de herança muda nas filhas dela, seguinte este principio, seria possivel colocar um codigo na tela de herança determinando que todas as edit's que existirem na tela troquem sua propriedade color.?Lembrando que como uso herança não sei quantas edit's terei na tela nem qual a propriedade name, então suponho que devo alterar a propriedade da classe TEdit ou algo parecido sei la...
   Desde já agradeço a colaboração de todos.
Km Sistemas

Km Sistemas

Curtidas 0

Respostas

Marco Salles

Marco Salles

13/06/2010

Fala Galera...
Trabalho com Delphi7 e Herança de tela, a duvida é:
Tudo que mudo na tela de herança muda nas filhas dela, seguinte este principio, seria possivel colocar um codigo na tela de herança determinando que todas as edit's que existirem na tela troquem sua propriedade color.? Lembrando que como uso herança não sei quantas edit's terei na tela nem qual a propriedade name, então suponho que devo alterar a propriedade da classe TEdit ou algo parecido sei la...
   Desde já agradeço a colaboração de todos.
... Coloque um codigo pode ser no OnShow do Formulario Padrao que varre os Controles do Proprietario ( que neste caso invariavelmente sera o Formulario , mesmo que o controle esteja dentro de um Outro Container um Panel por exemplo) e Atribua a ele a Cor que Vc Deseja   Todo formulario Herdado tera este método Herdado e executado no seu OnShow e portanto tera Todos os Edits (Mesmo que esses não seje Herdado do FormPadrão ) tera sua propriedade color Alterada
GOSTEI 0
Francisco Sena

Francisco Sena

13/06/2010

Amigo,   Eu ainda não sou muito bom no Delphi, estou aprendendo faz pouco tempo, mas, eu já desenrolei, através de umas aulas que li, sobre como "pintar" alguns componentes em tempo de execução, mesmo ele sendo herdado e talz.   O código é o seguinte: Dentro do evento FormShow   for i := 0 to ComponentCount - 1 do
    if (Components[i] is TDBEdit) then
    begin
      TDBEdit(Components[i]).OnEnter := AplicaCor;
      TDBEdit(Components[i]).OnExit := RetiraCor;
    end;     As procedures AplicaCor e RetiraCor:   procedure TfrmBase.AplicaCor(Sender: TObject);
begin
  TDBEdit(Sender).Color := clInfoBk;
end;   procedure TfrmBase.RetiraCor(Sender: TObject);
begin
  TDBEdit(Sender).Color := clWindow;
end;     Você pode substiuir por outros componentes...   Não sei se é o correto.. mais espero que tenha ajudado um pouco.   Valeu!
GOSTEI 0
Marco Salles

Marco Salles

13/06/2010

Amigo,   Eu ainda não sou muito bom no Delphi, estou aprendendo faz pouco tempo, mas, eu já desenrolei, através de umas aulas que li, sobre como "pintar" alguns componentes em tempo de execução, mesmo ele sendo herdado e talz.   O código é o seguinte: Dentro do evento FormShow   for i := 0 to ComponentCount - 1 do
    if (Components[i] is TDBEdit) then
    begin
      TDBEdit(Components[i]).OnEnter := AplicaCor;
      TDBEdit(Components[i]).OnExit := RetiraCor;
    end;     As procedures AplicaCor e RetiraCor:   procedure TfrmBase.AplicaCor(Sender: TObject);
begin
  TDBEdit(Sender).Color := clInfoBk;
end;   procedure TfrmBase.RetiraCor(Sender: TObject);
begin
  TDBEdit(Sender).Color := clWindow;
end;     Você pode substiuir por outros componentes...   Não sei se é o correto.. mais espero que tenha ajudado um pouco.   Valeu!
So um Adento daquilo que vc colocou .. Como o Edit é Um Controle e O Controle descende de TComponent O Correto ( Sem usar o For In do Delphi2010) é Varrer os Controles e Não os Componentes Vc evita testes desnecessários percorrendo Componentes que nunca serão um Controle ( Exemplo classico são os Labels ) .. Mas com oeu disse , so um Adendo
GOSTEI 0
Km Sistemas

Km Sistemas

13/06/2010


Amigo,
 
Eu ainda não sou muito bom no Delphi, estou aprendendo faz pouco tempo, mas, eu já desenrolei, através de umas aulas que li, sobre como "pintar" alguns componentes em tempo de execução, mesmo ele sendo herdado e talz.
 
O código é o seguinte:
Dentro do evento FormShow
 
for i := 0 to ComponentCount - 1 do
    if (Components[i] is TDBEdit) then
    begin
      TDBEdit(Components[i]).OnEnter := AplicaCor;
      TDBEdit(Components[i]).OnExit := RetiraCor;
    end;
 
 
As procedures AplicaCor e RetiraCor:
 
procedure TfrmBase.AplicaCor(Sender: TObject);
begin
  TDBEdit(Sender).Color := clInfoBk;
end;
 
procedure TfrmBase.RetiraCor(Sender: TObject);
begin
  TDBEdit(Sender).Color := clWindow;
end;
 
 
Você pode substiuir por outros componentes...
 
Não sei se é o correto.. mais espero que tenha ajudado um pouco.
 
Valeu!
 

Deu Certinho!!!   Obrigado...
GOSTEI 0
POSTAR