[C++Builder] Changement de donnée dans DBGRID

Fermé
sfeltan Messages postés 29 Date d'inscription vendredi 2 février 2007 Statut Membre Dernière intervention 1 mai 2007 - 18 févr. 2007 à 10:50
lirey83 Messages postés 75 Date d'inscription mardi 2 janvier 2007 Statut Membre Dernière intervention 18 août 2007 - 19 févr. 2007 à 19:58
Voila je fais un programme sous C++ Builder version 3 (et oui, vieille version car dans mon bts de programation ils ont pas de sous pour acheter la dernière version ^^) et en fait j'affiche les données d'une base de donnée de type ACCESS 2003 dans un composant DBGRID.
Mon hic: je veux effectuer une action lorsqu'il y a un changement dans l'affichage de mon DBGRID. Alors j'ai vu qu'il y a des méthodes "OnDataChange" mais que sur les objets DataSource. Le truc c'est que j'ai une boucle infinie de scrutation de ma base de donnée et si je met le "OnDataChange" sur mon DataSource, il s'active car mon programme est en boucle de lecture et le fait d'executer la requete SQL dans le composant de type TQuery active le "OnDataChange".

En gros j'aimerais que mon programme capte d'eventuels changement de l'affichage dans mon DBGRID (affichage réactualisé chaque seconde grace à un Timer qui exécute la requete d'affichage chaque seconde).

Quelqu'un aurait une solution???

3 réponses

lirey83 Messages postés 75 Date d'inscription mardi 2 janvier 2007 Statut Membre Dernière intervention 18 août 2007 13
19 févr. 2007 à 11:05
Regardes aussi l'évènement OnBeforeScroll etOnAfterScroll qui se produisent à chaque changement de record.
Tu peux aussi débrancher temporairement tes évènements le temps de faire les opérations nécessaire. Typiquement tu fais ça avec un try/finally :
- Débranche l'évènement (mise à NULL)
- try { ...}
- finally rebranche l'évènement
0
sfeltan Messages postés 29 Date d'inscription vendredi 2 février 2007 Statut Membre Dernière intervention 1 mai 2007
19 févr. 2007 à 18:45
euh... c'est du c++ ça???
0
lirey83 Messages postés 75 Date d'inscription mardi 2 janvier 2007 Statut Membre Dernière intervention 18 août 2007 13
19 févr. 2007 à 19:58
oui et non, extension de C++ spécifique à C++Builder Borland (faut pas oublier que la VCL et tous les composants sont fait en Delphi). Faut mettre aussi __ devant finally. __finally fonctionne de la même manière que catch sauf que le code est toujours executé, erreur ou pas dans le bloc try. Cela permet d'être sur que certaines opérations seront effectuées même si on a eu des erreurs entre temps.
0