控件编辑时重绘要重载哪个事件?(50分)

  • 主题发起人 主题发起人 没理头号
  • 开始时间 开始时间

没理头号

Unregistered / Unconfirmed
GUEST, unregistred user!
我要为ProgressBar加个显示进度的Label,
我想在Form设计时调整Progress的大小时,Label会随之改变位置,让Label的位置总是在
ProgressBar的中心,该怎么做?
 
新建一个控件
是progressbar和label的组合。
然后在画的时候根据progressbar的width决定label的left不就行了。
 
已经有这种控件,为什么要自己写?
 
OnSize?
其实你可以用Sample页中的Gauge
 
没别的意思,只是学习?
 
To :小虫子:P
画的事件哪个?
 
To zw84611:
我要的是在窗体设计时改变!
 
用GradProgress控件吧,有进度条和百分比
 
To 所有人:
我是想自己写,是学习用,要找控件,我找这样的控件,我一下子都能找到,
刚找一个,可是它是从TGraphicsControl继承的,
有谁有从TProgressBar继承的这样控件?
本来我自己也可从TWinControl继承来写,可是总想多学点,
所以从高点写总结经验!
 
不用画啦.创建Progress时创建一个Lable.
然后重载一下onPaint事件就好啦.
我自已做了一个相似的控件.你要我给你啊.
 
对,重载OnPaint,能够“在窗体设计时改变”的。
 
请发到szwork2000@163.net
 
各位,ProgressBar根本没有OnPaint事件
 
只要他的父类有就行了。继承一个,重载OnPaint
参考:http://www.delphibbs.com/delphibbs/dispq.asp?lid=0653778
 
class PACKAGE TProgressBarLabel : public TProgressBar
{
private:
TLabel *FLabel;
int FRatio;
void __fastcall SetTextFont(TFont *v);
protected:
void __fastcall PaintWindow(HDC DC);//重载TWinControl的PaintWindow事件,
public:
__fastcall TProgressBarLabel(TComponent* Owner);
__fastcall ~TProgressBarLabel();
void __fastcall SetStep(int v);
__published:
__property TLabel *Text={read=FLabel,write=FLabel};
};
上面这样一个控件,在设计窗体时,Text的属性能设,
但是运行时仍回初始的状态,为什么?
我的构造函数如下,是不是下面有问题,但我看别的控件也和我一样先在构造函数里生成所有要的对象啊?
__fastcall TProgressBarLabel::TProgressBarLabel(TComponent* Owner)
: TProgressBar(Owner)
{
FLabel=new TLabel(this);
FLabel->Parent =this;
FLabel->Caption="0%";
FRatio=0;
}
 
我搞定了,要程序的请发到szwork2000@163.net
不过写的很简单,对学习者有用!
(注:环境是BCB6.0)
 
后退
顶部