2016-10-22 1 views
-2

En Delphi, lorsque je capture les événements MouseWheel pour un TImage, je trouve que les événements de roue ne sont pas créés sur mon TImage mais plutôt décalés vers le haut et vers la gauche (mais plus petit). En d'autres termes, si vous placez la souris sur le coin inférieur droit de mon TImage, je n'obtiens aucun événement. Mais j'obtiens des événements au-dessus et à gauche du TImage. Cela ne semble pas changer la façon dont je capture les événements. J'ai essayé simple hijack en ajoutant la propriété OnMouseWheel. J'ai essayé de créer un composant descendant, exposant OnMouseWheel. J'ai essayé de surcharger DoMouseWheel. J'ai essayé d'accrocher WndProc() et de capturer WM_MOUSEWHEEL. Tous résultent dans la même chose.Événements Delphi MouseWheel dans TImage non alignés

+0

Veuillez indiquer le code minimal avec lequel nous pouvons reproduire le problème, voir [MCVE] (http://stackoverflow.com/help/mcve). –

+0

Ajouter l'image sur un wincontrol comme un panneau avec des dimensions identiques et exposer la manipulation des roues sur ce contrôle. En tant que descendant de graphiccontrol, l'image ne reçoit aucun type de message défilant. –

+0

'TImage' est un contrôle graphique, pas un contrôle fenêtré. L'entrée de la souris est reçue en premier par le parent fenêtré puis déléguée à l'enfant non fenêtré le plus proche. Les coordonnées reçues sont donc relatives au Parent, pas à l'Image. Il semble que le parent n'adapte pas correctement les coordonnées lors de la délégation. Mais sans un MVCE, personne ne peut vous dire pourquoi. –

Répondre

-2

Ok, c'était long. Toutes les autres fonctions fenêtrées semblaient fonctionner. J'ai changé mon composant pour hériter de TCustomControl et ajouté la fonctionnalité dont j'avais besoin de TImage et les choses fonctionnent beaucoup mieux.

+1

Comment cela répond-il à la question? –