我想覆盖TBCDProgressBar Component的OnPaint
事件。它是Lazarus(freepascal)的一个组件,我故意标记了Delphi,因为在覆盖事件时没有区别,并且我希望获得尽可能多的帮助。TBCDProgressBar
清除时没有OnPaint
事件:
TBCDProgressBar = class(TCDProgressBar)
private
FBCThemeManager: TBCThemeManager;
procedure SetFBCThemeManager(AValue: TBCThemeManager);
public
constructor Create(AOwner: TComponent); override;
published
property ThemeManager: TBCThemeManager read FBCThemeManager write SetFBCThemeManager;
end;
我的第一种方法是追踪
TBCDProgressBar
,直到找到OnPaint
-Event。结果是:
TCDProgressBar = class(TCDControl)
TCDControl = class(TCustomControl)
TCustomControl = class(TWinControl)
最后在
TCustomControl
中我找到了property OnPaint: TNotifyEvent read FOnPaint write FOnPaint;
我不明白如何从
OnPaint
覆盖TCustomControl
从而影响TBCDProgressBar
。编辑://
我不知道您可以像往常一样覆盖它,因此这是遇到相同问题的任何人的解决方案:
TBCDProgressBarWithOnPaint = class(TBCDProgressBar)
protected
procedure Paint; override;
end;
procedure TBCDProgressBarWithOnPaint.Paint;
begin
inherited;
// drawing a line on Progressbar
Canvas.Pen.Color:=clRed;
Canvas.Line(200,0,200,20);
end;
最佳答案
如果它是可见的(受保护,公共或已发布)和虚拟的,则无论树有多远,都可以覆盖它,就像在TProgressBar中声明它一样。
关于delphi - 覆盖OnPaint-Event TBCDProgressBar,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42225195/