Salut
J'ai un thread dans mon application qui effectue des opérations de bd assez longues (sélection d'un ensemble de données, calcul de statistiques...). J'utilise des composants Table en mémoire (SQL MemTable) ainsi qu'une form avec un TProgressbar pour afficher l'avancement de l'opération. Ensuite, à la fin de ce thread (OnTerminate) j'appelle une procédure qui effectue un ensemble de "dessins" (graphiques, rafraîchissement de dbgrid...).
Tout marche comme il faut, sauf que quand j'appelle la procédure qui crée le thread dans ma form plusieurs fois de suite (à intervalle de quelques secondes), des boutons commencent à disparaître, les libellés de mes TPageControl disparaîssent, des DateTimePicker deviennet des lignes horizontales... :$![]()
![]()
voici une copie d'écran d'un TPageControl et de deux TDateTimePicker après ce problème:
Quel est le problème? qu'est-ce que je dois corriger? (surtout que je ne reçois AUCUN message d'erreur!)
Merci d'avance
--> Je viens d'essayer avec invalidate, repaint, refresh, et update afin de faire revenir la form à son état initial, sans sucès: est-il possible que le problème soit dû aux composants tierces que j'utilise (probablement pas "multithread safe", composants de la suite DevExpress)?
---> C'est bon: j'ai trouvé la solution : en fait, j'ai commis l'erreur d'effectuer sur des opérations sur des composants visuels depuis un thread SANS appeler synchronize, ce qui m'a valu le comportement bizarre de ma form (pas aussi bizarre que ça en fait).
Partager