PDA

Ver la Versión Completa : Evento OnMouseWheel no me responde en un Componente.


FENIXadr
22-09-2011, 02:42:27
Hola a todos .. he buscado este tema en el foro pero no he encontrado... por la red tampoco he encontrado lo que busco.. y mi problema es este..
Estoy haciendo un componente derivado de TCustomControl, tengo todos los eventos del mouse además de otros eventos.. Creo mis propias rutinas para MouseMove, MouseDown, MouseUp, MouseWheel, las asigno a los eventos y aqui comienza el problema :
MouseMove, MouseDown, MouseUP funcionan a la perfeccion pero MouseWheel no hay forma de que funcione.. no entiendo que pasa porque hago lo mismo con los otros eventos que si funcionan..
Los eventos MouseWheelUp, MouseWheelDown, Enter, Exit... tampoco funcionan..

alguna idea???

dec
22-09-2011, 04:13:43
Hola,

Buscando un poco en internet, parece que una posible solución sería "dar el foco" a tu componente en el evento "OnMouseEnter", de manera que, a partir de ahí, podrá ya recibir los mensajes apropiados para manejar el "OnMouseWheel". Prueba a ver. Yo lo leí aquí (http://stackoverflow.com/questions/456488/how-to-add-mouse-wheel-support-to-a-component-descended-from-tgraphiccontrol), entre otros sitios.

FENIXadr
23-09-2011, 00:38:27
Hola dec... muchisisisisisisiisisiisimas gracias... lo pude solucionar pero no exactamente como decia el link... (obviamente que la idea la saque de ese link. jeje )
En el link decia de capturar el evento OnMouseEnter, para luego hacer el foco en nuestro componente, la cosa es que dicho evento no existe como tal.. asi que lo único que tube que hacer es Poner el foco en el evento OnMouseMove, que ese evento si funcionaba.

ej. :



.....
........

Constructor TMiComponente.Create (AOwner : TComponent);
begin
Inherited Create (AOwner);

........
....

OnMouseMove := MouseMove;
OnMouseWheel := MouseWheel;

.....
.......
end;

........
..........
.....

procedure TMiComponente.MouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
SetFocus; // Aca ponemos en foco nuestro componente..
.......
......
.........
end;

......
.......


procedure TMiComponente.MouseWheel (Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
...........
.....
.......
end;




Una vez mas muchisimas gracias... el tema se puede dar por terminado..