2009-05-10 3 views
0

J'ai un descendant TGraphicControl qui peint assez lentement. Il y a aussi un descendant de TWinControl, celui-ci peint rapidement. Les deux contrôles sont sur le même TPanel.Peut-on appeler TWinControl.Update depuis TGraphicControl.Paint?

Lors du défilement, le TGraphicControl est mis à jour plus souvent que TWinControl, de sorte qu'il ne semble pas synchronisé. Cette mise à jour est faite par Windows et/ou la VCL, pas par mon code.

Je peux résoudre ce problème en appelant TWinControl.Update de la méthode TGraphicControl.Paint, mais je suis un peu inquiet que cela puisse causer des problèmes d'une manière ou d'une autre.

Est-il sécuritaire de le faire?

Répondre

1

Tant qu'il n'y a pas un appel à votre twincontrol qui devrait être bon. Vous pourriez obtenir la mise à jour twincontrol plus souvent que strictement necc mais c'est tout.

+0

Fait sens. J'ai modifié le panneau parent afin que son gestionnaire WMPaint met à jour tout TWinControls enfant. Toutes les boucles récursives sont évitées de cette façon. – Giel

1

C'est sûr, tant qu'ils ne sont pas liés. Mais cela ne semble pas être une approche très efficace.

Le TGraphic dépend de la peinture par le contrôle parent, est-ce aussi le parent du TWinControl?

Vous pourriez expérimenter un peu avec:

a) changer le contrôle basé sur TGraphic être un TWinControl (TGraphic est pas utile ou efficace de toute façon). C'est si vous possédez la source.

b) Intégrez le contrôle graphique dans un TPanel spécial (sans bordure, etc.)

Questions connexes