53 votes

Quelle est la différence entre rafraîchir, mettre à jour et repeindre ?

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 ?

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.

42voto

stukelly Points 3076

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.

39voto

Lars Truijens Points 24005

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.

4voto

jeff slesinger Points 81

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).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X