Fórum Componente... #372371

16/07/2009

0

Criei um componente herdado de DBEdit, onde muda-se a cor do DBEdit quando entra e volta ao normal quando sai ...

tudo funcionou certinho, até que:

em 1 DBEdit, coloquei um evento OnExit e o evendo definido no componente deixou de funcionar, ou seja, o OnExit do componente foi sobreposto pelo definido em tempo de design do sistema ...

estou definindo assim o evento no Create do componente assim :

OnEnter:= setFocoEnter;
OnExit:= setFocoExit;


será que estou errando em algo ou não tem jeito mesmo, um evendo sobrepõe o outro ???


abraços !!!


Danielrsanches

Danielrsanches

Responder

Posts

16/07/2009

Osocram

Na verdade esta errado.
O evento é uma maneira do componente se comunicar e dar flexibilidade para o desenvolvedor que vai usar.
Vc não pode usar o evento p trabalhar dentro do componente

deve procurar um metodo para isso, ou pegar msg do windows, algo do tipo.

Criei um componente herdado de DBEdit, onde muda-se a cor do DBEdit quando entra e volta ao normal quando sai ... tudo funcionou certinho, até que: em 1 DBEdit, coloquei um evento OnExit e o evendo definido no componente deixou de funcionar, ou seja, o OnExit do componente foi sobreposto pelo definido em tempo de design do sistema ... estou definindo assim o evento no Create do componente assim : OnEnter:= setFocoEnter; OnExit:= setFocoExit; será que estou errando em algo ou não tem jeito mesmo, um evendo sobrepõe o outro ??? abraços !!!



Responder

Gostei + 0

16/07/2009

Danielrsanches

como eu deveria fazer ???

preciso saber quando o foco sai do componente, acionando assim a rotina de mudança de cor ...

tem alguma idéia ???


abraços !!


Responder

Gostei + 0

16/07/2009

Osocram

    procedure CMEnter(var Message: TCMEnter); message CM_ENTER;
    procedure CMExit(var Message: TCMExit);   message CM_EXIT;

tente usar esses...
como eu deveria fazer ??? preciso saber quando o foco sai do componente, acionando assim a rotina de mudança de cor ... tem alguma idéia ??? abraços !!



Responder

Gostei + 0

16/07/2009

Danielrsanches

eu fiz como disse acima, porém, agora o problema inverteu ...

ele executa o Exit dentro do componente e o OnExit não está funcionando ....


tem idéia do que pode ser ???


Responder

Gostei + 0

16/07/2009

Danielrsanches

minha procedure ficou assim:

procedure TdsDBEdit.setFocoExit(var Message: TCMExit);
begin
        Color:= fCorNaoFocado;
        Font.Assign(fFontNaoFocado);
        if Assigned(OnExit) then
                OnExit(Self);
end;


assim ele executa os 2, tanto o setFocoExit quanto o próprio OnExit, porém, o componente não está jogando mais o valor na tabela do banco de dados ...


to ficando louco com isso !!!


Responder

Gostei + 0

16/07/2009

Osocram

Isso que eu disse aqui...
vc tem que colocar o
Inherited;

na implementação... so la dentro... sem fazer override da msg.

    procedure CMEnter(var Message: TCMEnter); message CM_ENTER;
    procedure CMExit(var Message: TCMExit);   message CM_EXIT;
tente usar esses... [quote:75ffac8288=´danielrsanches´]como eu deveria fazer ??? preciso saber quando o foco sai do componente, acionando assim a rotina de mudança de cor ... tem alguma idéia ??? abraços !!
[/quote:75ffac8288]


Responder

Gostei + 0

16/07/2009

Danielrsanches

obrigado Osacram... resolvi o problema colocando a procedure assim:

procedure TdsDBEdit.setFocoExit(var Message: TCMExit);
begin
        inherited;
        Color:= fCorNaoFocado;
        Font.Assign(fFontNaoFocado);
end;


agora, vc teria uma explicação básica sobre o inherited ??? me desculpe a ignorância, mas não faço idéia do que ele tá fazendo ali que deu certo !!! rsrsrs


obrigado !!


Responder

Gostei + 0

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

Aceitar