CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

在cbc中如何重载窗体事件?

楼主wjm2000()2002-11-12 14:49:17 在 C++ Builder / 基础类 提问

在cbc中如何重载窗体事件?  
  1.在delphi中只要用  
  inherited   Create(self);即可  
  在cbc中怎么做?  
  2.另我新建一个窗体,系统默认好象生成的不是FormCreate  
  而是窗口类的构造函数,它与窗体FormCreate有什么区别?  
  问题点数:100、回复次数:20Top

1 楼szbug(深圳虫)回复于 2002-11-12 14:53:58 得分 0

一个是类的构造函数,一个是窗体事件,不一样的。。。Top

2 楼wjm2000()回复于 2002-11-12 14:56:00 得分 0

楼上的,有回答第一个问题吗?  
  因为在delphi中经常会重载Create事件,  
  可是在CBC中一般是怎么做啊?Top

3 楼david_ch(阿阌)回复于 2002-11-12 14:59:22 得分 0

关注中……Top

4 楼wjm2000()回复于 2002-11-12 15:03:05 得分 0

就好比我原来在delphi要重载一个Frame的create事件,  
  在create重载后的事件里加一句  
  inherited   Create(application)即可,  
  但在cbc里应该怎么做?  
  Top

5 楼jishiping(JSP 季世平)回复于 2002-11-12 15:10:15 得分 0

我对Delphi不是很熟。我个人认为,Delphi里的成员函数Create,相当于BCB  
  里的构造函数。Top

6 楼wjm2000()回复于 2002-11-12 15:16:48 得分 0

楼上的大佬:  
  我重载析构事件,系统报"stack   overflow",机器随后当机,真可怕。  
  其实我就做如下改动:  
  TForm2::TForm2(TComponent   *   Owen);  
  ----->  
  TForm2::TForm2(TComponent   *   Owen,int   i);  
  Top

7 楼szbug(深圳虫)回复于 2002-11-12 15:18:00 得分 0

to   楼主:  
        不好意思,Delphi不是很熟悉。。所以不是很清楚,但是构造函数和事件在类里面来讲都是一样的:成员函数,只是构造函数是特殊的成员函数(有一定的规定,析构函数也如此)。Top

8 楼wjm2000()回复于 2002-11-12 15:21:51 得分 0

还有就是假如我重载了相应事件,  
  在delphi可调用inherited来调用原类相应事件,  
  在CBC里要怎么做?Top

9 楼szbug(深圳虫)回复于 2002-11-12 15:23:27 得分 0

不可能吧。。。  
  我这样,是可以的:  
  头文件:  
  public: //   User   declarations  
          __fastcall   TForm1(TComponent*   Owner);  
          __fastcall   TForm1(TComponent*   Owner,   int   i);  
  Top

10 楼angowb()回复于 2002-11-12 15:24:36 得分 0

gzTop

11 楼wjm2000()回复于 2002-11-12 15:29:57 得分 0

你这样啊?  
  哦,我是直接改那个TForm1,你这样我倒没试过!  
  即使这样,那我要先执行父类的相应方法要怎么弄啊?Top

12 楼jishiping(JSP 季世平)回复于 2002-11-12 15:30:12 得分 0

更改了构造函数,BCB有时会有问题。如果有问题,一般执行Build就可以了。Top

13 楼wjm2000()回复于 2002-11-12 15:32:54 得分 0

你这样也不行!  
  还是提示"Stack   overflow";  
  我按你的改了,编译不会出错,  
  便运行出错  
   
          Form2   =   new   TForm2(Application,100);//error:stack   overflow  
          Form2->ShowModal();  
          delete   Form2;  
  Top

14 楼slwqw(四大名捕之追杀令)回复于 2002-11-12 15:36:41 得分 0

1、inherited   Create(self);  
   
        这是调用父类的构造函数,BCB已经帮你做了,如下:  
  __fastcall   TForm1::TForm1(TComponent*   Owner)  
  :   TForm(Owner)   //这里就是  
   
  2、在delphi可调用inherited来调用原类相应事件,  
  在CBC里要怎么做?  
   
  使用::,如下:  
   
  TForm1::WndPorc(...)  
  {  
      TForm::WndProc(...);  
   
      //Your   Code  
  }  
  Top

15 楼wjm2000()回复于 2002-11-12 15:42:55 得分 0

sorry,是我搞错了,不能用application,  
  改成this搞定Top

16 楼wjm2000()回复于 2002-11-12 15:47:39 得分 0

To     BCB_FANS(四大名捕之追杀令)   :  
  1.  
  __fastcall   TForm2::TForm2(TComponent   *Owner,int   i,int   j)  
      :   TForm(Owner)  
  {  
      TForm2::TForm2(Owner);//这句在这里是不是多此一举?  
      fi=i;  
  }  
  2.你给的第二个解答意思是不是假如我有个TForm2是从TForm1继承过来的,  
  那么要在TForm2里执行TForm1是不是如  
  TForm1::Fun()即可,  
  另我原来看C++的书,好象有个关键字叫super可代表父类,可在cbc里怎么没有?Top

17 楼slwqw(四大名捕之追杀令)回复于 2002-11-12 15:56:32 得分 100

1、的确是多此一举。  
  2、YES!!!  
   
  super是Java里边的关键字,BCB没有,只能使用::   .Top

18 楼wjm2000()回复于 2002-11-12 16:17:52 得分 0

还有一问:  
  在delphi里有用is   判断当前类是什么类,cbc中怎么做?怎么强制转换  
  好比  
  if(Sender   is   TEdit)then  
      t:=Sender   as   TEdit;  
  Top

19 楼wjm2000()回复于 2002-11-12 16:20:25 得分 0

如下写专业吗?  
  if(Own->Components[i]->ClassName()   =="TEdit")  
      t=TEdit(Own->Components[i]);Top

20 楼wjm2000()回复于 2002-11-12 16:24:25 得分 0

if(AnsiString(Sender->ClassName())   ==AnsiString("TButton"))  
      {  
          TButton   *b=(TButton   *)(Sender);  
          ShowMessage(b->ClassName()   );  
      }Top

相关问题

  • 如何将重载窗体的事件写成组件,在整个Application中有效?
  • 如何实现窗体的重载
  • [今天装了VB.NET 2003]超级菜的问题请教!!!窗体的Click事件和重载的OnClick优先问题请教。
  • 在VB中,如何实现在关闭窗体时的重载?
  • 重载窗体的Create方法时出现错误!
  • 关于窗体Create方法重载的问题
  • 窗体重载 Create方法的问题,帮帮忙
  • delphi中如何防止子窗体的重载
  • 窗体事件问题
  • 窗体最小化事件

关键词

  • 函数
  • delphi
  • bcb
  • 执行
  • application
  • 重载
  • tform
  • 窗体
  • cbc
  • 事件

得分解答快速导航

  • 帖主:wjm2000
  • slwqw

相关链接

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

广告也精彩

反馈

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