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

sfeltan Messages postés 29 Date d'inscription   Statut Membre Dernière intervention   -  
lirey83 Messages postés 75 Date d'inscription   Statut Membre Dernière intervention   -
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???
A voir également:

3 réponses

lirey83 Messages postés 75 Date d'inscription   Statut Membre Dernière intervention   13
 
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   Statut Membre Dernière intervention  
 
euh... c'est du c++ ça???
0
lirey83 Messages postés 75 Date d'inscription   Statut Membre Dernière intervention   13
 
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