关于TBrush和TPen的怪问题?
zygtp 2002-05-30 04:48:40 我在编写组件时用到TBrush和TPen,用法是这样的:
class PACKAGE TSpeedButton1 : public TScrollingWinControl
{
private:
TPen *FPen ;
TBrush *FBrush;
void __fastcall SetPen(TPen *Value);
void __fastcall SetBrush(TBrush *Value);
protected:
public:
__fastcall TSpeedButton1(TComponent* Owner);
__fastcall ~TSpeedButton1();
__published:
__property TPen *Pen = {read=FPen, write=SetPen};
__property TBrush *Brush = {read=FBrush, write=SetBrush};
};
__fastcall TSpeedButton1::TSpeedButton1(TComponent* Owner)
: TScrollingWinControl(Owner)
{
FPen=new TPen;
FBrush=new TBrush;
}
//---------------------------------------------------------------------------
__fastcall TSpeedButton1::~TSpeedButton1()
{
delete FPen;
delete FBrush;
}
namespace Speedbutton1
{
void __fastcall PACKAGE Register()
{
TComponentClass classes[1] = {__classid(TSpeedButton1)};
RegisterComponents("Samples", classes, 0);
}
}
//---------------------------------------------------------------------------
void __fastcall TSpeedButton1::SetPen(TPen *Value)
{
FPen->Assign(Value);
}
void __fastcall TSpeedButton1::SetBrush(TBrush *Value)
{
FBrush->Assign(Value);
}
当然我的程序不像这么简单,上面的程序也不会出错。
问题:
1。对于TBrush对象在New之前它的属性全为???我给它付NULL后还为???,New后给它的属性付值(这时并不出错)后却还为???, FPen在New时一切正常,其它地方并未对Pen和Brush付值。
2。当我对该类的Pen和Brush的属性付值时却出什么地址错误,有时Brush的为???Pen为NULL,有时正常,均会出错。
说明:
开发环境:Win2000+CB5
重新Build、重起机子、换机子均无效
请各位帮忙探讨一下问题的原因!