如何在窗体的构造函数中添加自己的参数?在线等待...
如何在窗体的构造函数中添加自己的参数?
__fastcall TWizForm::TWizForm(TComponent* Owner, int nDate)
: TForm(Owner)
{
m_nCurDate = nDate;
}
我这样写,编译时没问题,运行时程序却自动退出,为什么?
我是这样调的:
TTWizForm *pform = new TWizForm(Application, 0);
...
问题点数:20、回复次数:19Top
1 楼iec(bcbtovs)回复于 2002-03-27 20:41:49 得分 0
构造函数可以初始化自定义变量
TTwizForm *pform=new TwizForm(this);行不行Top
2 楼Behard(我爱天安门)回复于 2002-03-27 20:57:22 得分 0
gz and upTop
3 楼invalid(空心菜(Python是个好东东,大家多用用!))回复于 2002-03-27 21:47:39 得分 5
在给窗体在写一个构造函数啊,类可以有多个构造函数啊。
//。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);
}
Top
4 楼888789(yf888789)回复于 2002-03-27 22:31:20 得分 0
重载Top
5 楼darkinger(Ganger)回复于 2002-03-27 22:36:17 得分 0
你的写法没有问题,可能是你的程序中另外的问题引起程序的崩溃Top
6 楼czylj(夭夭)回复于 2002-03-28 02:42:56 得分 0
darkinger(少爷) (
相同意见.
建议再写一个重Top
7 楼Jonix(圣域天子)回复于 2002-03-28 10:21:31 得分 0
__fastcall TWizForm::TWizForm(TComponent* Owner, int nDate)
: TForm(Owner), m_nCurDate(nDate) //这种写法,是Form类还没建立时,就已赋值了
{
}
Top
8 楼Commander007(面朝代码背朝天)回复于 2002-03-28 13:20:54 得分 0
darkinger(少爷)说得对,你应该再加一个构造函数!Top
9 楼ustc_scgy_micastle(寒塘鹤影)回复于 2002-03-28 15:11:59 得分 0
我觉得以上所说均不妥,
Application 似忽不能作为自定义窗口的 owner,除非是主窗口,
你不妨试试将主窗口作 owner.Top
10 楼kingcaiyao(aking)回复于 2002-03-28 15:19:44 得分 10
我想说三点:
1.Application可以作为动态创建窗口的释放者,所有者,但不是parent。
2.一个类可以有多个构造函数,一个且仅有一个析构函数,这无可厚非,可以另写一个构造函数
3.还有一个方法,不知大家试了没有,我们不用多加一个构造函数,而在默认的构造加一行代码,保证类的基本行为得以实现:
that is:
__fastcall TWizForm::TWizForm(TComponent* Owner, int nDate)
: TForm(Owner)
{
TForm::TForm(Owner);
m_nCurDate = nDate;
}
Top
11 楼diabloyj(大菠萝)回复于 2002-03-28 16:36:07 得分 0
学习Top
12 楼zsr(老牛)回复于 2002-03-28 18:09:02 得分 0
真是奇怪,我又加了一个参数就可以了。
__fastcall TWizForm::TWizForm(TComponent* Owner, int nDate, int n2)
: TForm(Owner);
....
百思不得其解!!!Top
13 楼zsr(老牛)回复于 2002-03-29 13:14:09 得分 0
没人有好的建议了?Top
14 楼zsr(老牛)回复于 2002-06-22 13:06:19 得分 0
up!Top
15 楼zhou_xindong(zhou_xindong)回复于 2002-06-22 15:31:03 得分 5
重载窗体的构造器即可,但要重载双参数的构造器!CB用双参数的构造器来动态创建窗体,因为设计时创建的窗体用DFM文件,而动态创建的窗体没有此文件,对基类构造器,那个int没有用,你可以把0给它。
__fastcall TForm1::TForm(TComponent* Owner, int nMyint)
: TForm(Owner,0)
{
}
Top
16 楼noodlest(noodlest)回复于 2002-06-22 18:35:40 得分 0
我在看!!!???~~~__Top
17 楼lluunn007(书生)回复于 2002-06-22 18:42:17 得分 0
Mark@_@
学习。Top
18 楼jishiping(JSP 季世平)回复于 2002-06-22 18:53:43 得分 0
我也遇到过,好像Build一下就可以了。Top
19 楼huzhangyou(信仰(http://www.libing.net.cn))回复于 2002-06-22 21:55:03 得分 0
invalid(空心菜) :你怎么变成三角形了阿
我记得你是星星阿Top




