Je ne sais pas laquelle de ces trois méthodes me convient le mieux. Elles fonctionnent toutes pour moi. Quelqu'un connaît-il la différence entre Refresh, Update et Repaint ?
Réponses
Trop de publicités?Selon la documentation en ligne :
Rafraîchir - Reproduit le contrôle à l'écran.
Appelez la méthode Refresh pour repeindre le contrôle immédiatement. La méthode Refresh appelle la méthode Repaint. Utilisez les méthodes Refresh et Repaint de manière interchangeable.
Repeindre - Force le contrôle à repeindre son image à l'écran.
Appelez Repaint pour forcer le contrôle à à repeindre son image immédiatement. Si le ControlStyle comprend csOpaque, le contrôle se peint directement directement. Sinon, le paramètre Repaint appelle la méthode Invalidate et puis la méthode Update, de sorte que toute parties visibles des contrôles situés sous le contrôle sera également repeint.
Mise à jour - Traite immédiatement tous les messages de peinture en attente.
Appelez Update pour forcer le contrôle à être repeint avant que d'autres processus, éventuellement traitement, éventuellement long, n'ait lieu traitement. Utilisez l'option Update pour fournir un immédiat à l'utilisateur qui ne peut pas attendre que le message de peinture de Windows arrive.
La mise à jour n'invalide pas le contrôle, mais force simplement une nouvelle peinture de toutes les régions qui ont déjà été invalidées. Appelez plutôt Repaint pour pour invalider également le contrôle.
Votre question a déjà reçu une réponse, mais si vous voulez de bonnes performances et moins de scintillement, vous devriez plutôt appeler Invalidate. Cela permet à Windows d'optimiser le processus de peinture.
Invalider - Repeindre complètement le contrôle.
Utilisez Invalidate lorsque le contrôle entier doit être repeint. Lorsque plus d'une une région du contrôle doit être besoin d'être repeinte, l'option Invalider entraînera l'affichage de l'ensemble du contrôle. l'ensemble de la fenêtre en une seule en un seul passage, évitant ainsi le scintillement par des repeints redondants. Il n'y a pas de performance pour appeler Invalidate plusieurs fois avant que le avant que le contrôle ne soit effectivement repeint.
Selon une ancienne référence VCL (CBuilder 6) :
Invalider " Invalidate " informe un contrôle que sa surface entière doit être repeinte. L'appel à Invalidate peut empêcher le scintillement causé par une série de repeints partiels. Il n'y a pas de pénalité de performance si l'on appelle Invalidate plusieurs fois avant que le contrôle ne soit effectivement repeint".
Le repeint réel ne se produit pas tant que le contrôle n'est pas mis à jour. Pour forcer un repeint immédiat, appelez plutôt Repaint.
Repeindre "TWinControl::Repaint appelle la méthode Invalidate puis la méthode Update pour repeindre le contrôle" (légère paraphrase).
(Malheureusement, la référence la plus ancienne est meilleure et plus complète que la référence la plus récente que je possède (CBuilder 2007).
13 votes
A toi et aux deux personnes qui ont voté pour ce projet jusqu'à présent : Je sais que l'ouverture de l'aide Delphi à partir de l'IDE est un peu lente, mais cela devrait quand même être plus rapide que de demander sur SO et d'attendre des réponses. Des réponses qui ne peuvent guère faire autre chose que de citer l'aide.
6 votes
La recherche de la documentation en ligne, avec Google, est également une autre option. docs.codegear.com
7 votes
L'aide d'Embarcadero est réputée pour sa "haute qualité, pleine d'informations". Je comprends qu'il a mieux demandé ici sur SO.
0 votes
Il est plus rapide de chercher sur Google et de se retrouver sur SO, que de lire l'aide.
1 votes
@truthseeker Veuillez ajouter une réponse alors. Toutes les réponses sont des levées de documents. Cette question n'a aucune valeur à mes yeux.
0 votes
@YeeLikeKram Seulement si vous ne savez pas comment utiliser la documentation.
2 votes
@David Heffernan Pas d'accord. Google a une recherche plus intelligente que la plupart des docs (y compris ceux d'Embarcadero). Et les docs, bien qu'ils soient évidemment un bon début, sont souvent limités par le manque de détails. SO a le bénéfice de la discussion avec les utilisateurs. Donc non, dire simplement RTFM n'aide pas nécessairement.
0 votes
@Yee Avez-vous déjà lu les réponses ici ? Et maintenant vous avez changé de discours. D'abord vous dites que Google est plus rapide. Maintenant vous dites que le contenu de SO est meilleur. Qu'est-ce que c'est ?
1 votes
@David Bien sûr. Discuter d'Invalider est utile, et sa discussion découle de la question initiale. J'ai dit "Google" et j'ai atterri sur SO puisque c'est l'un des premiers résultats. Je ne change pas du tout de discours.
0 votes
@Yee Il n'y a pas de discussion. Juste une déclaration floue qui ne transmet aucune idée.
1 votes
@David Il mentionne une autre méthode, qui est en fait très utile.
0 votes
@Yee Les liens vers les documents le sont aussi. Personne ne dit que Repeindre = Rafraîchir et que les deux = Invalider + Mettre à jour.
0 votes
@Bizmarck : "Il est plus rapide de chercher sur Google et de se retrouver sur SO, que de lire l'aide." Oui, mais si tu lis l'aide, tu n'as pas besoin d'attendre que d'autres personnes répondent. Donc googler SO et d'autres endroits pour une réponse a du sens. Demander à une question sur ce qui peut être facilement trouvé dans l'aide n'a pas beaucoup de sens.
0 votes
@mghie - L'aide ne fera pas de comparaison entre les 3 fonctions (ou 4 car il a manqué Invalidate)