TDBEdit(Sender).Color := clYellow ???

Delphi

16/06/2004

Olá Pessoal !

olha só,

eu tenho um sistema desenvolvido, agora o cliente pediu pra mim mudar a cor do foco dos edit e DBedit quando receber o foco e ao sair do edit, eu uso erança de formulários, teria alguma forma de implementar no meu formulário pai pra todos os decendentes de
TCustomEdit mudar a cor ao receber o foco ?

tipo um onEnter e OnExit de todos os decendentes de TCustomEdit.

Seria esse codigo que seria implementado.

TCustomEdit(Sender).Color := clYellow;

Obrigada !

Renata Coimbra


Renata Coimbra

Renata Coimbra

Curtidas 0

Respostas

Xanatos

Xanatos

16/06/2004

Bom...acho que se voce tiver um TCustomEdit no form pai... voce só associaria esse evento nos filhos!!! assim nao serve?


GOSTEI 0
Jrjoliv2003

Jrjoliv2003

16/06/2004

Renata..

Na parte da manhão fiz a mesma pergunta e me respondeream isso:

selecione todos os DBEdits do seu formulario e va no evento OnEnter e digite
TDBEdit(Sender).Color := clYellow;
depois no evento onExit digite
TDBEdit(Sender).Color := clWindow;

Eu não tive tempo de testar!!!
Se vc testar ainda hoje e funcionar me retorne por favor!!!

JR.


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

16/06/2004

crie uma rotina para isso chamada, por exemplo, ControlChange. vamos ao exemplo.

type
    TfrmAncestral = class(TForm)
        {...}
    private
        {...}
    public
        ComponAnt: TComponent;
        procedure ControlChange(Sender: TObject);
        {...}
    end;


agora, no onActivate do seu form, coloque:
procedure TfrmAncestral.FormActivate(Sender: TObject);
begin
    Screen.OnActiveControlChange := ControlChange;
end;

e essa é a procedure em si:

procedure TfrmAncestral.ControlChange(Sender: TObject);
begin
    if Assigned(ComponAnt) then
        TDBEdit(ComponAnt).Color := clWindow; // cor sem foco

    if (ActiveControl is TEdit) or
          (ActiveControl is TDBEdit) or
          (ActiveControl is TDBCheckBox) or
          (ActiveControl is TDBComboBox) or
          (ActiveControl is TComboBox) or
          (ActiveControl is TDBLookupComboBox) or
          (ActiveControl is TEdit) then
    begin
        TDBEdit(ActiveControl).Color := clYellow; // cor com foco
        ComponAnt := ActiveControl;
    end;
end;

atente-se ainda para, no evento OnDeactivate, desligar esse comportamento:

procedure TfrmAncestral.FormDeactivate(Sender: TObject);
begin
    Screen.OnActiveControlChange := nil;
end;

veja se isso resolve o seu problema.


GOSTEI 0
Renata Coimbra

Renata Coimbra

16/06/2004

Olá, bom dia pra todos !

usei essa procedure no meu fomrulário pai, funciona maravilhosamente bem, eu até coloquei outros objetos na lista e funciona tudo,

todos os formulários filhos estão funcionando bem, mais tá dando um erro ao sair de qualquer um formulário filho, dar um erro de memoria maluco. access violation adress etc etc...

o que eu posso fazer pra sanar isso ?


Obrigada pela atenção !

Renata Combra.


GOSTEI 0
Xanatos

Xanatos

16/06/2004

Muito legal essa dica! eu testei e funcionou perfeitamente!!! Valeu
Emerson :!:


GOSTEI 0
Renata Coimbra

Renata Coimbra

16/06/2004

Emerson !

Esquecir de falar, eu uso MDI, todos os formulários herdados funciona o foco mais na hora de sair dar o erro de memoria !

o que pode ser ?

Obrigada.

Renata Combra.


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

16/06/2004

vc não pode esquecer de ´desligar´ o ControlChange antes de fechar ou desativar o form.


GOSTEI 0
Xanatos

Xanatos

16/06/2004

Eu tambem uso MDI e nao deu problema!!! 8)


GOSTEI 0
Renata Coimbra

Renata Coimbra

16/06/2004

emerson.en

eu só mudei para ele desligar o ControleChange de onDeactivate para onClose e parou de dar erro.

Obrigada pela atenção !

Renata Coimbra.


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

16/06/2004

disponham.


GOSTEI 0
Jrjoliv2003

Jrjoliv2003

16/06/2004

Muito Show!!!

Vivendo e aprendendo!

JR.


GOSTEI 0
POSTAR