Problema com função para mudar a cor do TEdits e TBBEdits
20/03/2013
1
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.
Responder
Posts
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?
Responder
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.
Responder
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.
Responder
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.
Responder
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 ...
Responder
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!
http://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!
http://www.devmedia.com.br/criando-form-padrao-heranca-aplicacao-completa-delphi-firebird-e-tcxscheduler
/23109#ixzz2O5XuvHQf
Abraço!
Responder
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.
Responder
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.
Responder
Clique aqui para fazer login e interagir na Comunidade :)