组件应该只涂一次

时间:2013-11-03 02:07:44

标签: delphi components paint invalidation

我在Delphi 6中创建自己的组件 除了油漆部分外,该部件工作正常 我的油漆部分就像这样开始

inherited Paint;
if (csdesigning in ComponentState) then
begin

因此,当在运行时创建组件时,它永远不会被绘制,但如果我删除该行 它似乎一直在重新粉刷

有没有办法可以移动(绘制)代码,所以它只能被调用,例如。无效

任何人都会感激不尽,我会感谢你

1 个答案:

答案 0 :(得分:4)

只要组件因任何原因需要重新绘制自己,就会调用

Paint()。例如,如果另一个窗口在组件上移动,然后移开。 Invalidate()仅仅是一个触发重绘的手动请求。您不应该在调用Paint()时尝试限制,这不是您的责任。您的责任是在要求涂料时涂漆。

话虽如此,Paint()只应在实际重新授权时才被调用。如果您的Paint()被过度调用,那么您做错了。您的Paint()代码正在执行不应该执行的操作,或者Paint()之外的代码过于频繁地调用Invalidate() / Refresh()。很难说,因为你没有显示任何实际代码。