Limpar buffer de entrada

Delphi

14/04/2005

Senhores

Tenho um form com um grid em que, caso clique no título da coluna, faço a ordenação dos dados pelo campo selecionado.

A partir deste form chamo um outro form que tenho um grid que inseri um evento para que quando clico duas vezes na linha, o sistema assume que foi clicado no botão confirmar, fecha este form e retorna o controle para o form anterior, preechendo determinado campo.

O meu problema está na seguinte situação. Caso o grid do 2o. form chamado fique sobre o grid do form principal e a linha selecionada pelos dois cliques esteja na mesma posição vertical da linha de título do grid do principal o sistema assume os dois cliques, porém também registra que houve um clique no título do principal quando fechada a 2a. janela.

Há alguma forma para que eu possa limpar o buffer de entrada para que após registrado os dois cliques seja limpo e não assuma o outro clique do nada?

Agradeço desde já.


Hjpezzo

Hjpezzo

Curtidas 0

Respostas

Beppe

Beppe

14/04/2005

O meu problema está na seguinte situação. Caso o grid do 2o. form chamado fique sobre o grid do form principal e a linha selecionada pelos dois cliques esteja na mesma posição vertical da linha de título do grid do principal o sistema assume os dois cliques, porém também registra que houve um clique no título do principal quando fechada a 2a. janela.

Faça uma chamada para Application.ProcessMessages; logo no início do manipulador de eventos do duplo clique(ou seja qual for o evento que usa)


GOSTEI 0
Hjpezzo

Hjpezzo

14/04/2005

Já utilizei o ProcessMessages em todos os processos seguintes do sistema, seja logo no evento ondblclick, no botão confirmar, no retorno do 2o. form....

Porém em nenhum local funcionou.. o sistema continua com o mesmo comportamento.

De qualquer forma, agradeço pela força.

Continuo aguardando..

Abraços


GOSTEI 0
Kapak

Kapak

14/04/2005

Não seria somente vc desabilitar o evento onColumnClick qdo vc mostra o segundo grid e reativá-lo depois ?


GOSTEI 0
Hjpezzo

Hjpezzo

14/04/2005

Senhores

Primeiramente, obrigado a todos que ao menos leram esta mensagem.

Após muitas tentativas de habilitar e desabilitar controles, sem sucesso, acabamos localizando onde tudo é originado.. o evento de controle dos cliques do mouse no objeto TControl.

Fomos rastreando e vimos que eram alguns eventos que os próprios componentes do Delphi executam que acabam ocasionando este tipo de problema.

Fizemos alguns testes e conseguimos ´contornar´ a situação desenvolvendo nosso código de uma forma diferente, utilizando outros eventos para simular o dblclick do grid e retornar corretamente os valores para o grid principal.

Assim, conseguimos ajustar o processamento do sistema sem utilizar os eventos padrões do Delphi e zerar a parada toda..

Grande abraço a todos..


GOSTEI 0
POSTAR