覆盖 OnPaint-Event TBCDProgressBar
Override OnPaint-Event TBCDProgressBar
我想覆盖 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;
我不明白如何从 TCustomControl
覆盖 OnPaint
以影响 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;
如果它是可见的(受保护的,public 或已发布的)并且是虚拟的,那么无论它在树上有多远,您都可以覆盖它,就像它在 TProgressBar 中声明的那样。
我想覆盖 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;
我不明白如何从 TCustomControl
覆盖 OnPaint
以影响 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;
如果它是可见的(受保护的,public 或已发布的)并且是虚拟的,那么无论它在树上有多远,您都可以覆盖它,就像它在 TProgressBar 中声明的那样。