J'ai utilisé certains programmes avec des barres de défilement qui mettent à jour le contenu lié alors que vous faites toujours glisser le "pouce", et d'autres qui ne le font pas jusqu'à ce que vous relâchiez la souris. Cela implique qu'il existe différents types de messages Windows impliqués ici. Mais tout ce que je peux trouver à partir de TScrollBar est un événement OnScroll qui se déclenche continuellement pendant que vous faites glisser. Il n'a également pas un événement OnMouseDown ou OnMouseUp. Est-il possible de configurer une notification "OnEndDragging" pour un TScrollBar?Comment savoir quand j'ai arrêté de faire défiler un TScrollBar?
Répondre
Essayez ce code (testé avec Delphi 2009), il remplira l'espace client de forme avec une couleur au hasard pendant que vous suivez le pouce, et remplissez-le en jaune lorsque le pouce est libéré:
procedure TForm1.ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode;
var ScrollPos: Integer);
begin
Randomize;
if ScrollCode = scTrack then
Color := RGB(Random(256), Random(256), Random(256));
if ScrollCode = scEndScroll then
Color := clYellow;
end;
Le Les valeurs TScrollCode
correspondent aux valeurs WPARAM
que vous trouverez documentées pour WM_HSCROLL
et WM_VSCROLL
.
Les programmes qui mettent à jour leur zone de défilement «en direct» lorsque l'utilisateur tire le pouce manipulent le code sb_ThumbTrack
pour les messages wm_HScroll
et wm_VScroll
. Ceux qui ne se mettent à jour que lorsque l'utilisateur relâche le pouce manipulent le code sb_ThumbPosition
.
Il y a un compromis sur ces deux options, qui est de mettre à jour après que l'utilisateur n'a pas bougé le pouce, même si l'utilisateur ne l'a pas encore sorti. Saisissez , puis définissez une minuterie. Si la minuterie se déclenche, mettez à jour l'affichage. Si un autre sb_ThumbTrack
arrive, réinitialiser le temporisateur.
- 1. Comment faire défiler manuellement un panneau?
- 2. Comment faire défiler correctement CEdit?
- 3. Comment faire pour faire défiler un RichTextBox vers le bas?
- 4. Exécution de JAI dans OSGi
- 5. Comment faire défiler les blocs de matrice?
- 6. Zoomer/faire défiler jusqu'à
- 7. Comment faire défiler jusqu'à un élément à l'intérieur d'une div?
- 8. Delphi: Comment savoir quand un TEdit change de taille?
- 9. Comment savoir s'il y a des données à faire défiler dans Quantum Grid 5?
- 10. Comment savoir quand Big O est Logarithmique?
- 11. jscrollpane pour faire défiler un panneau
- 12. Comment savoir quand un élément XAML est terminé chargement
- 13. Comment savoir quand un winform est chargé par Process.Start?
- 14. Comment faire défiler en douceur dans UIScrollView?
- 15. Comment savoir quand un contrôle va être caché
- 16. Comment faire défiler Swing avec "ensureIndexIsVisible"?
- 17. Href = "#" Ne pas faire défiler
- 18. Comment savoir quand Windows est inactif
- 19. Comment utiliser jquery pour faire défiler horizontalement
- 20. Comment forcer un arbre XUL à faire défiler du code?
- 21. Comment faire défiler jusqu'à un élément après l'expansion avec slideToggle?
- 22. Comment savoir quand nosetest s'exécute par programme
- 23. Comment savoir quand un programme est ouvert avec javascript?
- 24. Comment savoir quand un film QTM commence à jouer?
- 25. Besoin de faire défiler une grille WPF
- 26. comment faire pivoter/faire défiler le sélecteur avec un film dans scrollview dans iphone sdk 3.0?
- 27. Comment faire pour faire défiler un UITableView vers une section qui ne contient aucune ligne?
- 28. IIS7 Site arrêté
- 29. JAI Changer la résolution JPEG
- 30. Visual Studio: faire défiler les points d'arrêt
Alors il n'a besoin que d'un événement car il construit cette information dans le paramètre ScrollCode? C'est bon à savoir. Merci! –
Exactement. Cela correspond à la manière dont Windows envoie un message de défilement unique pour chaque barre de défilement, avec les informations supplémentaires codées dans les données de message 'wParam' et' lParam'. – mghie