Fórum WM_MOUSEWHEEL - DBGrid Scroll, mas... #372420
17/07/2009
0
...
private
{ Private declarations }
procedure WMMouseWheel(var Message: TWMMouseWheel); message WM_MOUSEWHEEL;
public
...Quando não estou com o foco no DBGrid, a procedure executa, porem parece que o DBGrid cancela a ação do scroll do mouse nesta procedure. Venho até vocês para buscar ajuda. Sei que posso utilizar a captura da mensagem responsável pelo movimento do scroll do mouse para tratar. Estou usando o [color=brown:4e214c4f51]Delphi 6[/color:4e214c4f51]. (Aqui na empresa utiliza o D6 e D7, neste sistema utiliza o D6)
Aqui na empresa não posso obstruir os componentes e nem criar sem que tenha vinda um conjunto de ideias suficiente para gerar um componente com um numero de opções adicionais. Portanto, criar um componente que faça isso está fora de cogitação.
O sistema em si tem milhares de exceções, enfim, usar o [color=darkblue:4e214c4f51]ApplicationEvents[/color:4e214c4f51] também não poderia.
Estou num beco onde so posso recorrer a mensagem responsável pelo scroll. [color=blue:4e214c4f51]Preciso capturar o scroll do mouse quando o foco estiver num DBGrid.[/color:4e214c4f51]
Alguem pode me ajudar!?
.lg.
Curtir tópico
+ 0Posts
17/07/2009
Danielrsanches
procedure Tform_principal.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean); var i: SmallInt; begin if Msg.message = WM_MOUSEWHEEL then begin Msg.message := WM_KEYDOWN; Msg.lParam := 0; i := HiWord(Msg.wParam) ; if i > 0 then Msg.wParam := VK_UP else Msg.wParam := VK_DOWN; Handled := False; end; end;
seria só colocar uma checagem se o foco está no Grid... (DBGrid1.Focused)....
abraços !!!
Gostei + 0
17/07/2009
.lg.
A questão não é porque não funcionaria, é porque eu não posso usa-lo mesmo. Até gostaria de usa-lo para tratar tudo.
Ps.: ´Seria interessante se existisse um [color=darkblue:3e60d17246]FormEvents[/color:3e60d17246], assim não capturasse tudo da aplicação. Nem todos os forms podem ser declarados na [b:3e60d17246]uses[/b:3e60d17246] do form principal.´
Aprecio sua iniciativa, se souber de mais alguma solução...
Atenciosamente,
.LG.
Gostei + 0
17/07/2009
Woinch
Gostei + 0
17/07/2009
Danielrsanches
o evento OnMouseWheel do Form não resolveria seu problema ???
Gostei + 0
20/07/2009
.lg.
Implementei, porém, não surtiu nenhum efeito.
Infelizmente eu já havia tentado!
O problema é que com o DBGrid, esse evento do form não é executado. Parece que o dbgrid faz o foco do form ser perdido para o grid, fazendo o evento não acontecer enquanto o mouse esta sobre o dbgrid. Mas o evento acontece quando deixa a posição do grid.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)