CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

如何在窗体的构造函数中添加自己的参数?在线等待...

楼主zsr(老牛)2002-03-27 20:35:30 在 C++ Builder / 基础类 提问

如何在窗体的构造函数中添加自己的参数?  
  __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

相关问题

  • 关于Assembly动态装载的问题:如何给窗体类的构造函数传参数?
  • 怎样用main()直接解译一个对话框?因为对话框的构造函数要一个激活他哪个窗体的参数
  • 窗体的构造函数和formcreate事件
  • 有关窗体的构造函数的问题,在线等待!
  • 可以将 “窗体”和“dbgrid” 做参数传给函数吗?
  • 为什么类有带参数的构造函数后就必须要写上无参数的构造函数
  • 请问BCB窗体函数都带个参数TObject *Sender到底是有何用?
  • 拷贝构造函数的参数为什么不能加const
  • 在vb中如何实现带参数的构造函数???
  • 如何向javabean的构造函数传参数?

关键词

  • 函数
  • application
  • twizform
  • 构造
  • 窗体
  • trecvform
  • owner
  • ndate
  • smsdate
  • tcomponent

得分解答快速导航

  • 帖主:zsr
  • invalid
  • kingcaiyao
  • zhou_xindong

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo