Habilitar e Desabilitar o Evento AfterScroll, Como ?

Delphi

18/05/2005

Olá galera,

Tenho um form que tem na parte superior a parte mestre e abaixo num grid os detalhes.
a estrutura detalhe é composta de uma Query1, DataSourceDetalhe e DBGridDetalhe.

o mestre é um table1 ligado a um datasource1.

toda vez que mudo de registro no table1 a query1 é fechada, recebe o parametro da table1 e é aberta novamente.

o problema é que na Query1 eu tenho uma rotina no AfterScroll dela.

eu preciso que o afterscroll só seja executado qdo o usuário clicar no grid com o mouse e/ou mover as setas acima e abaixo.

tem que ser assim porque qdo eu navego na table1 eu sei em que registro da query1 eu tenho que ir. Faço isso através do Locate na query1. Aí se o usuário estiver dentro do GridDetalhe e navegar deve executar o AfterScroll;.

resumo, como habilitar e desabilitar o afterscroll? eu teria que saber se as setas estão sendo pressionadas e/ou se foi clicado com o mouse, certo? como?

alguem pode me ajudar?


valeu
Diogo.


Diogoalles

Diogoalles

Curtidas 0

Respostas

Marco Salles

Marco Salles

18/05/2005

Pode ser que o fato de inibir e habilitar o evento , não resolva o seu problema.. Mas o fato é que para desconectar o evento escreva o código, na Posição que lhe for conveniente

table1.AfterScroll:=Nil


:arrow: e para habilitar

table1.AfterScroll:=Table1AfterScroll;



GOSTEI 0
Diogoalles

Diogoalles

18/05/2005

Ok Marco.. blz.. gostei da idéia.

mesmo assim para habilitar eu preciso saber se foi clicado com o mouse no grid e/ou se as setas do teclado foram pressionadas.

como poderia fazer ?

abraço

Diogo


GOSTEI 0
Marco Salles

Marco Salles

18/05/2005

mesmo assim para habilitar eu preciso saber se foi clicado com o mouse no grid e/ou se as setas do teclado foram pressionadas.


Para as setas eu nun vejo problema nenhum , ja que exite tratamento, com os evento da Grid( OnMouseKeyDown , OnMouseKeyPress etc...)

Para o Click Do Mouse.. Ai :arrow:

:arrow: Quando se clica na Grid o evento ONDBGrid1CellClick(Column: TColumn);
é disparado... Mas antes dele ocorre o evento OnTableBeforeScroll e OnTableAfterScroll

:arrow: Quando se clica na Barra de rolagem da Grid , o EventoDBGrid1CellClick(Column: TColumn); Não é disparado.. Mas os evento OnTableBeforeScrooll e o Evento OnTableAfterScrrol é disparado

Não sei se lhe vais ser Util esta Informação , mas o Evento OnTableBeforeScrrol é disparado antes Do Evento OnTableAfterScrroll em qualquer uma das situações acima



GOSTEI 0
POSTAR