0

我在 Delphi 6 中创建自己的组件 该组件运行良好,但油漆部分除外,我的油漆部分是这样开始的

inherited Paint;
if (csdesigning in ComponentState) then
begin

因此,当组件在运行时创建时,它永远不会被绘制,但如果我删除那条线,它似乎总是被重新绘制

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

任何将不胜感激,我提前谢谢你

4

1 回答 1

4

Paint()每当组件出于任何原因需要重新绘制自身时调用。例如,如果另一个窗口在您的组件上方移动,然后又被移开。 Invalidate()仅仅是触发重绘的手动请求。你不应该试图限制何时Paint()被调用,那不是你的责任。您的责任是在请求绘制时绘制组件。

话虽如此,Paint()只有在真正需要重新绘制时才应调用。如果你Paint()被过度调用,那么你做错了什么。您的Paint()代码正在做不应该做的事情,或者您之外的代码Paint()正在调用Invalidate()/Refresh()过于频繁。很难确定,因为您没有显示任何实际代码。

于 2013-11-03T03:54:05.687 回答