我在 Delphi 6 中创建自己的组件 该组件运行良好,但油漆部分除外,我的油漆部分是这样开始的
inherited Paint;
if (csdesigning in ComponentState) then
begin
因此,当组件在运行时创建时,它永远不会被绘制,但如果我删除那条线,它似乎总是被重新绘制
有没有办法可以移动(油漆)代码,所以它只会被调用,例如。无效
任何将不胜感激,我提前谢谢你
我在 Delphi 6 中创建自己的组件 该组件运行良好,但油漆部分除外,我的油漆部分是这样开始的
inherited Paint;
if (csdesigning in ComponentState) then
begin
因此,当组件在运行时创建时,它永远不会被绘制,但如果我删除那条线,它似乎总是被重新绘制
有没有办法可以移动(油漆)代码,所以它只会被调用,例如。无效
任何将不胜感激,我提前谢谢你
Paint()
每当组件出于任何原因需要重新绘制自身时调用。例如,如果另一个窗口在您的组件上方移动,然后又被移开。 Invalidate()
仅仅是触发重绘的手动请求。你不应该试图限制何时Paint()
被调用,那不是你的责任。您的责任是在请求绘制时绘制组件。
话虽如此,Paint()
只有在真正需要重新绘制时才应调用。如果你Paint()
被过度调用,那么你做错了什么。您的Paint()
代码正在做不应该做的事情,或者您之外的代码Paint()
正在调用Invalidate()
/Refresh()
过于频繁。很难确定,因为您没有显示任何实际代码。