Problema com função para mudar a cor do TEdits e TBBEdits
Bom dia,
Estou usando a seguinte procedure para mudar a cor dos edits.
E aqui eu chamo ela nos meus formulários.
Só que eu utilizo o evento OnChange e OnExit de diversos edits no meu sistema e o evento OnChange ele é ativado assim que abre o formulário e o evento OnExit parou de funcionar.
Estou usando a seguinte procedure para mudar a cor dos edits.
class procedure TEventos.CorOnEnter(Sender: TObject);
begin
if Sender.ClassType = TEdit then
(Sender as TEdit).Color := clYellow;
if Sender.ClassType = TDBEdit then
(Sender as TDBEdit).Color := clYellow;
end;
class procedure TEventos.CorOnExit(Sender: TObject);
begin
if Sender.ClassType = TEdit then
(Sender as TEdit).Color := clWindow;
if Sender.ClassType = TDBEdit then
(Sender as TDBEdit).Color := clwindow;
end;E aqui eu chamo ela nos meus formulários.
var
I: Integer;
begin
for I := 0 to ComponentCount - 1 do
if Components[I].ClassType = TEdit then
begin
(Components[I] as TEdit).OnEnter := TEventos.CorOnEnter;
(Components[I] as TEdit).OnExit := TEventos.CorOnExit;
end; Só que eu utilizo o evento OnChange e OnExit de diversos edits no meu sistema e o evento OnChange ele é ativado assim que abre o formulário e o evento OnExit parou de funcionar.
Nícolas Braz
Curtidas 0
Respostas
Joel Rodrigues
20/03/2013
O que parou de funcionar?
O evento onde você muda a cor ou o evento padrão que você trata individualmente para cada edit?
O evento onde você muda a cor ou o evento padrão que você trata individualmente para cada edit?
GOSTEI 0
Nícolas Braz
20/03/2013
O que parou de funcionar?
O evento onde você muda a cor ou o evento padrão que você trata individualmente para cada edit?
O evento onde você muda a cor ou o evento padrão que você trata individualmente para cada edit?
O evento que eu trato individualmente.
GOSTEI 0
Joel Rodrigues
20/03/2013
Cara, ao meu ver está ocorrendo o seguinte. Quando você associa um determinado método a um evento, você automaticamente "desliga" a função que ala já existia. Ou seja, sua função pra mudar a cor está sobrepondo o evento original.
GOSTEI 0
Joel Rodrigues
20/03/2013
Ah, não estou lembrado agora se o Delphi permite múltiplos event handlers.
Por exemplo, em C# nós fazemos += para associar uma função a um evento, e não =. Ou seja, adicionamos uma função para tratar aquele evento, mas não limitamos somente a uma.
Por exemplo, em C# nós fazemos += para associar uma função a um evento, e não =. Ou seja, adicionamos uma função para tratar aquele evento, mas não limitamos somente a uma.
GOSTEI 0
Nícolas Braz
20/03/2013
Cara, ao meu ver está ocorrendo o seguinte. Quando você associa um determinado método a um evento, você automaticamente "desliga" a função que ala já existia. Ou seja, sua função pra mudar a cor está sobrepondo o evento original.
Eu também pensei nisso! Só que agora não sei o que fazer ...
GOSTEI 0
Evandro Sanz
20/03/2013
Não sei se é isso que procura mas vale tentar!
1
2
3
4
5
6
7
8
9
10
11
procedure TFrmPadrao.ChangeExit(Sender: TObject);
begin
if Sender is TDBEdit then
TDBEdit(Sender).Color := clWindow
else if Sender is TDBLookupComboBox then
TDBLookupComboBox(Sender).Color := clWindow
else if Sender is TDBComboBox then
TDBComboBox(Sender).Color := clWindow
else if Sender is TDBMemo then
TDBMemo(Sender).Color := clWindow;
end;
Isso se encontra em um artigo aqui da devmedia segue link!
https://www.devmedia.com.br/criando-form-padrao-heranca-aplicacao-completa-delphi-firebird-e-tcxscheduler
/23109#ixzz2O5XuvHQf
Abraço!
A procedure “Change Exit” faz com que o componente que acabou de perder o foco volte a ter suas propriedades de coriniciais.
1
2
3
4
5
6
7
8
9
10
11
procedure TFrmPadrao.ChangeExit(Sender: TObject);
begin
if Sender is TDBEdit then
TDBEdit(Sender).Color := clWindow
else if Sender is TDBLookupComboBox then
TDBLookupComboBox(Sender).Color := clWindow
else if Sender is TDBComboBox then
TDBComboBox(Sender).Color := clWindow
else if Sender is TDBMemo then
TDBMemo(Sender).Color := clWindow;
end;
Isso se encontra em um artigo aqui da devmedia segue link!
https://www.devmedia.com.br/criando-form-padrao-heranca-aplicacao-completa-delphi-firebird-e-tcxscheduler
/23109#ixzz2O5XuvHQf
Abraço!
GOSTEI 0
Joel Rodrigues
20/03/2013
Então, Sanz, mudar a cor ele consegue. O problema é que ele precisa associar um método "ChangeExit", no seu caso, ao evento. Quando ele faz isso, ele perde o código do evento padrão, pois este é sobreposto pela nova função.
E como eu disse, não sei se o Delphi aceita múltiplos event handlers.
E como eu disse, não sei se o Delphi aceita múltiplos event handlers.
GOSTEI 0
Nícolas Braz
20/03/2013
Então, Sanz, mudar a cor ele consegue. O problema é que ele precisa associar um método "ChangeExit", no seu caso, ao evento. Quando ele faz isso, ele perde o código do evento padrão, pois este é sobreposto pela nova função.
E como eu disse, não sei se o Delphi aceita múltiplos event handlers.
E como eu disse, não sei se o Delphi aceita múltiplos event handlers.
Exatamente! Existe algum outro método para se usar? Eu uso o evento OnExit e OnChange para calcular os valores de edits.
GOSTEI 0