2010-11-09 7 views
0

J'ai un dbgrid et sur son événement datasource onchange il y a du code qui fonctionne et qui prend 2-3 secondes. quand je défile avec la souris weel sur dbgrid le code de thant sur la source de données fonctionne pour toutes les lignes que j'ai défilées mais je veux que cela fonctionne pour la dernière rangée comment puis-je faire cela. il y a un événement AfterScroll pour la requête, mais il fait aussi les mêmesDelphi DBGrid défilement avec la souris

grâce

+0

Bonjour, utilisateur262967. Bienvenue à StackOverflow. Nous avons beaucoup de gens ici qui connaissent Delphi et ses composants, mais c'est un peu difficile de comprendre ce que vous cherchez. Pourriez-vous modifier votre question afin qu'il y ait une * question * claire quelque part? Merci. –

Répondre

1

Si je comprends bien ...

Ce que vous devez faire est, au lieu d'exécuter le code « OnChange » dans le Événement Datasource, vous devez démarrer un temporisateur (voir TTimer) et exécuter le code "OnChange" dans l'événement OnTimer.

Dans OnChange, vous devez uniquement démarrer/réinitialiser le temporisateur. De cette façon, si l'utilisateur fait défiler plusieurs enregistrements, il n'exécutera votre OnChange que si l'utilisateur reste inactif trop longtemps sur n'importe quel enregistrement, très probablement une seule fois sur le dernier enregistrement qu'il fait défiler vers.

La durée de la minuterie dépend de vos besoins spécifiques.

Cela fonctionnera également si l'utilisateur fait défiler avec la flèche du clavier.