Fórum TDBEdit(Sender).Color := clYellow ??? #238097

16/06/2004

0

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

Responder

Posts

16/06/2004

Xanatos

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


Responder

Gostei + 0

16/06/2004

Jrjoliv2003

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.


Responder

Gostei + 0

16/06/2004

Emerson Nascimento

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.


Responder

Gostei + 0

17/06/2004

Renata Coimbra

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.


Responder

Gostei + 0

17/06/2004

Xanatos

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


Responder

Gostei + 0

17/06/2004

Renata Coimbra

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.


Responder

Gostei + 0

17/06/2004

Emerson Nascimento

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


Responder

Gostei + 0

17/06/2004

Xanatos

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


Responder

Gostei + 0

17/06/2004

Renata Coimbra

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.


Responder

Gostei + 0

17/06/2004

Emerson Nascimento

disponham.


Responder

Gostei + 0

17/06/2004

Jrjoliv2003

Muito Show!!!

Vivendo e aprendendo!

JR.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar