J'ai écrit un contrôle de grille et je voudrais ajouter le support de la molette de la souris. Je pensais que ce serait aussi simple que de surcharger la méthode virtuelle DoMouseWheel, mais il y a un peu de problème.Comment utiliser DoMouseWheel pour faire défiler une ligne à la fois?
Vous pouvez définir le nombre de lignes à faire défiler à la fois dans le Panneau de configuration et le nombre par défaut est de trois. Et cela prend tout son sens lorsque vous faites défiler un document ou une page Web, mais sur une grille, je pense que l'on s'attend plutôt à faire défiler une ligne à la fois. Mais il semble que le support de la roue de Delphi appellera DoMouseWheel trois fois pour chaque cran que je défile, ce qui signifie que je ne peux que faire défiler chaque troisième ligne de la grille (ou quel que soit ce paramètre global).
Comment faire pour faire défiler une seule ligne à la fois pour chaque tour de la molette de la souris?
Mise à jour: La réponse courte ici est de simplement définir Résultat à Vrai après le défilement - alors il ne défile pas trois fois, mais seulement une fois.
Il n'y avait rien au sujet de la mise en œuvre qui est ressortie. Mais suivant votre conseil, je l'ai regardé de nouveau. Il s'avère simplement retourner True après défilement (je suis revenu hérité) l'a fait appeler seulement la fonction une fois. –
@Cobus: Bien sûr, si vous êtes en train de surcharger une fonctionnalité, vous devez vérifier si l'appel du code hérité est la bonne chose à faire. C'est pourquoi j'ai conseillé de copier la mise en œuvre de la grille VCL - il fait la bonne chose. Je n'ai pas vu * votre * implémentation, et je ne suis pas psychique. – mghie