Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Evento OnMouseWheel no me responde en un Componente. (https://www.clubdelphi.com/foros/showthread.php?t=75829)

FENIXadr 22-09-2011 02:42:27

Evento OnMouseWheel no me responde en un Componente.
 
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í, 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. :

Código Delphi [-]

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

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..


La franja horaria es GMT +2. Ahora son las 09:13:54.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi