__fastcall TWizForm::TWizForm(TComponent* Owner, int nDate)
: TForm(Owner)
{
m_nCurDate = nDate;
}
我这样写,编译时没问题,运行时程序却自动退出,为什么?
我是这样调的:
TTWizForm *pform = new TWizForm(Application, 0);
...
19 个解决方案
#1
构造函数可以初始化自定义变量
TTwizForm *pform=new TwizForm(this);行不行
TTwizForm *pform=new TwizForm(this);行不行
#2
gz and up
#3
在给窗体在写一个构造函数啊,类可以有多个构造函数啊。
//。h
lass TRecvForm : public TForm
{
__published: // IDE-managed Components
TPanel *Panel1;
TLabel *Label3;
TLabel *NameL;
TLabel *Label4;
TLabel *Label1;
TRichEdit *SmsRE;
TLabel *PhoneL;
TPanel *Panel2;
TLabel *Label8;
TLabel *TimeL;
TSpeedButton *CancelBtn;
TSpeedButton *SpeedButton1;
void __fastcall CancelBtnClick(TObject *Sender);
void __fastcall SpeedButton1Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TRecvForm(TComponent* Owner);
__fastcall TRecvForm(TComponent* Owner,String name,String phone2,String smsdate,String smstime,String msg);
};
//。cpp
TRecvForm *RecvForm;
//---------------------------------------------------------------------------
__fastcall TRecvForm::TRecvForm(TComponent* Owner)
: TForm(Owner)
{
}
__fastcall TRecvForm::TRecvForm(TComponent* Owner,String name,String phone2,String smsdate,String smstime,String msg)
: TForm(Owner)
{
NameL->Caption=name;
PhoneL->Caption=phone2;
TimeL->Caption=smsdate.SubString(1,4)+"-"+smsdate.SubString(5,2)+"-"+smsdate.SubString(7,2)+" "+smstime;
SmsRE->Lines->Add(msg);
}
//。h
lass TRecvForm : public TForm
{
__published: // IDE-managed Components
TPanel *Panel1;
TLabel *Label3;
TLabel *NameL;
TLabel *Label4;
TLabel *Label1;
TRichEdit *SmsRE;
TLabel *PhoneL;
TPanel *Panel2;
TLabel *Label8;
TLabel *TimeL;
TSpeedButton *CancelBtn;
TSpeedButton *SpeedButton1;
void __fastcall CancelBtnClick(TObject *Sender);
void __fastcall SpeedButton1Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TRecvForm(TComponent* Owner);
__fastcall TRecvForm(TComponent* Owner,String name,String phone2,String smsdate,String smstime,String msg);
};
//。cpp
TRecvForm *RecvForm;
//---------------------------------------------------------------------------
__fastcall TRecvForm::TRecvForm(TComponent* Owner)
: TForm(Owner)
{
}
__fastcall TRecvForm::TRecvForm(TComponent* Owner,String name,String phone2,String smsdate,String smstime,String msg)
: TForm(Owner)
{
NameL->Caption=name;
PhoneL->Caption=phone2;
TimeL->Caption=smsdate.SubString(1,4)+"-"+smsdate.SubString(5,2)+"-"+smsdate.SubString(7,2)+" "+smstime;
SmsRE->Lines->Add(msg);
}
#4
重载
#5
你的写法没有问题,可能是你的程序中另外的问题引起程序的崩溃
#6
darkinger(少爷) (
相同意见.
建议再写一个重
相同意见.
建议再写一个重
#7
__fastcall TWizForm::TWizForm(TComponent* Owner, int nDate)
: TForm(Owner), m_nCurDate(nDate) //这种写法,是Form类还没建立时,就已赋值了
{
}
: TForm(Owner), m_nCurDate(nDate) //这种写法,是Form类还没建立时,就已赋值了
{
}
#8
darkinger(少爷)说得对,你应该再加一个构造函数!
#9
我觉得以上所说均不妥,
Application 似忽不能作为自定义窗口的 owner,除非是主窗口,
你不妨试试将主窗口作 owner.
Application 似忽不能作为自定义窗口的 owner,除非是主窗口,
你不妨试试将主窗口作 owner.
#10
我想说三点:
1.Application可以作为动态创建窗口的释放者,所有者,但不是parent。
2.一个类可以有多个构造函数,一个且仅有一个析构函数,这无可厚非,可以另写一个构造函数
3.还有一个方法,不知大家试了没有,我们不用多加一个构造函数,而在默认的构造加一行代码,保证类的基本行为得以实现:
that is:
__fastcall TWizForm::TWizForm(TComponent* Owner, int nDate)
: TForm(Owner)
{
TForm::TForm(Owner);
m_nCurDate = nDate;
}
1.Application可以作为动态创建窗口的释放者,所有者,但不是parent。
2.一个类可以有多个构造函数,一个且仅有一个析构函数,这无可厚非,可以另写一个构造函数
3.还有一个方法,不知大家试了没有,我们不用多加一个构造函数,而在默认的构造加一行代码,保证类的基本行为得以实现:
that is:
__fastcall TWizForm::TWizForm(TComponent* Owner, int nDate)
: TForm(Owner)
{
TForm::TForm(Owner);
m_nCurDate = nDate;
}
#11
学习
#12
真是奇怪,我又加了一个参数就可以了。
__fastcall TWizForm::TWizForm(TComponent* Owner, int nDate, int n2)
: TForm(Owner);
....
百思不得其解!!!
__fastcall TWizForm::TWizForm(TComponent* Owner, int nDate, int n2)
: TForm(Owner);
....
百思不得其解!!!
#13
没人有好的建议了?
#14
up!
#15
重载窗体的构造器即可,但要重载双参数的构造器!CB用双参数的构造器来动态创建窗体,因为设计时创建的窗体用DFM文件,而动态创建的窗体没有此文件,对基类构造器,那个int没有用,你可以把0给它。
__fastcall TForm1::TForm(TComponent* Owner, int nMyint)
: TForm(Owner,0)
{
}
__fastcall TForm1::TForm(TComponent* Owner, int nMyint)
: TForm(Owner,0)
{
}
#16
我在看!!!???~~~__
#17
Mark@_@
学习。
学习。
#18
我也遇到过,好像Build一下就可以了。
#19
invalid(空心菜) :你怎么变成三角形了阿
我记得你是星星阿
我记得你是星星阿
#20
#1
构造函数可以初始化自定义变量
TTwizForm *pform=new TwizForm(this);行不行
TTwizForm *pform=new TwizForm(this);行不行
#2
gz and up
#3
在给窗体在写一个构造函数啊,类可以有多个构造函数啊。
//。h
lass TRecvForm : public TForm
{
__published: // IDE-managed Components
TPanel *Panel1;
TLabel *Label3;
TLabel *NameL;
TLabel *Label4;
TLabel *Label1;
TRichEdit *SmsRE;
TLabel *PhoneL;
TPanel *Panel2;
TLabel *Label8;
TLabel *TimeL;
TSpeedButton *CancelBtn;
TSpeedButton *SpeedButton1;
void __fastcall CancelBtnClick(TObject *Sender);
void __fastcall SpeedButton1Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TRecvForm(TComponent* Owner);
__fastcall TRecvForm(TComponent* Owner,String name,String phone2,String smsdate,String smstime,String msg);
};
//。cpp
TRecvForm *RecvForm;
//---------------------------------------------------------------------------
__fastcall TRecvForm::TRecvForm(TComponent* Owner)
: TForm(Owner)
{
}
__fastcall TRecvForm::TRecvForm(TComponent* Owner,String name,String phone2,String smsdate,String smstime,String msg)
: TForm(Owner)
{
NameL->Caption=name;
PhoneL->Caption=phone2;
TimeL->Caption=smsdate.SubString(1,4)+"-"+smsdate.SubString(5,2)+"-"+smsdate.SubString(7,2)+" "+smstime;
SmsRE->Lines->Add(msg);
}
//。h
lass TRecvForm : public TForm
{
__published: // IDE-managed Components
TPanel *Panel1;
TLabel *Label3;
TLabel *NameL;
TLabel *Label4;
TLabel *Label1;
TRichEdit *SmsRE;
TLabel *PhoneL;
TPanel *Panel2;
TLabel *Label8;
TLabel *TimeL;
TSpeedButton *CancelBtn;
TSpeedButton *SpeedButton1;
void __fastcall CancelBtnClick(TObject *Sender);
void __fastcall SpeedButton1Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TRecvForm(TComponent* Owner);
__fastcall TRecvForm(TComponent* Owner,String name,String phone2,String smsdate,String smstime,String msg);
};
//。cpp
TRecvForm *RecvForm;
//---------------------------------------------------------------------------
__fastcall TRecvForm::TRecvForm(TComponent* Owner)
: TForm(Owner)
{
}
__fastcall TRecvForm::TRecvForm(TComponent* Owner,String name,String phone2,String smsdate,String smstime,String msg)
: TForm(Owner)
{
NameL->Caption=name;
PhoneL->Caption=phone2;
TimeL->Caption=smsdate.SubString(1,4)+"-"+smsdate.SubString(5,2)+"-"+smsdate.SubString(7,2)+" "+smstime;
SmsRE->Lines->Add(msg);
}
#4
重载
#5
你的写法没有问题,可能是你的程序中另外的问题引起程序的崩溃
#6
darkinger(少爷) (
相同意见.
建议再写一个重
相同意见.
建议再写一个重
#7
__fastcall TWizForm::TWizForm(TComponent* Owner, int nDate)
: TForm(Owner), m_nCurDate(nDate) //这种写法,是Form类还没建立时,就已赋值了
{
}
: TForm(Owner), m_nCurDate(nDate) //这种写法,是Form类还没建立时,就已赋值了
{
}
#8
darkinger(少爷)说得对,你应该再加一个构造函数!
#9
我觉得以上所说均不妥,
Application 似忽不能作为自定义窗口的 owner,除非是主窗口,
你不妨试试将主窗口作 owner.
Application 似忽不能作为自定义窗口的 owner,除非是主窗口,
你不妨试试将主窗口作 owner.
#10
我想说三点:
1.Application可以作为动态创建窗口的释放者,所有者,但不是parent。
2.一个类可以有多个构造函数,一个且仅有一个析构函数,这无可厚非,可以另写一个构造函数
3.还有一个方法,不知大家试了没有,我们不用多加一个构造函数,而在默认的构造加一行代码,保证类的基本行为得以实现:
that is:
__fastcall TWizForm::TWizForm(TComponent* Owner, int nDate)
: TForm(Owner)
{
TForm::TForm(Owner);
m_nCurDate = nDate;
}
1.Application可以作为动态创建窗口的释放者,所有者,但不是parent。
2.一个类可以有多个构造函数,一个且仅有一个析构函数,这无可厚非,可以另写一个构造函数
3.还有一个方法,不知大家试了没有,我们不用多加一个构造函数,而在默认的构造加一行代码,保证类的基本行为得以实现:
that is:
__fastcall TWizForm::TWizForm(TComponent* Owner, int nDate)
: TForm(Owner)
{
TForm::TForm(Owner);
m_nCurDate = nDate;
}
#11
学习
#12
真是奇怪,我又加了一个参数就可以了。
__fastcall TWizForm::TWizForm(TComponent* Owner, int nDate, int n2)
: TForm(Owner);
....
百思不得其解!!!
__fastcall TWizForm::TWizForm(TComponent* Owner, int nDate, int n2)
: TForm(Owner);
....
百思不得其解!!!
#13
没人有好的建议了?
#14
up!
#15
重载窗体的构造器即可,但要重载双参数的构造器!CB用双参数的构造器来动态创建窗体,因为设计时创建的窗体用DFM文件,而动态创建的窗体没有此文件,对基类构造器,那个int没有用,你可以把0给它。
__fastcall TForm1::TForm(TComponent* Owner, int nMyint)
: TForm(Owner,0)
{
}
__fastcall TForm1::TForm(TComponent* Owner, int nMyint)
: TForm(Owner,0)
{
}
#16
我在看!!!???~~~__
#17
Mark@_@
学习。
学习。
#18
我也遇到过,好像Build一下就可以了。
#19
invalid(空心菜) :你怎么变成三角形了阿
我记得你是星星阿
我记得你是星星阿