类 杂

请教class of的问题楼主westuser()2004-06-09 11:15:50 在 Delphi / VCL组件开发及应用 提问
比如myClass=class   of   TObject;  
  2个问题:为什么要用class   of;什么时候用它?
问题点数:50、回复次数:8
Top
 

1 楼juliens(星星球愛思纯^_^)回复于 2004-06-09 11:19:19 得分 20记好了:  
  Class   of   定义的是一个元类,也就是类的类型,比如说TControlClass就是TControl类的类型,你可以用它定义TControl类。  
  什么时候用它呢,基本上它用作一个过程或函数的参数,来传递类类型,以实现多态!  
  要具体的说明可以参考《Delphi   技术手册》或《Delphi面向对象编程思想》
Top

2 楼juliens(星星球愛思纯^_^)回复于 2004-06-09 11:21:20 得分 0 下面是我写的一个函数,用来创建MDI子窗体,并使之只能创建一次,就用到了TFormClass元类:  
  function   TfrmMain.CreateChildForm(FormClass:   TFormClass;   Name:   String):   TForm;  
  var   ChildForm:   TForm;  
  begin  
      ChildForm   :=   TForm(Application.FindComponent(Name));  
      if   not   (Assigned(ChildForm))   then  
          ChildForm   :=   FormClass.Create(Application)  
      else  
      begin  
          ChildForm.WindowState   :=   wsNormal;  
          ChildForm.BringToFront;  
      end;  
      Result   :=   ChildForm;  
  end;  
  在这里FormClass就是TForm类型的!
Top

3 楼rockswj(石头,一直再努力)回复于 2004-06-09 11:21:29 得分 5类引用。  
  比如传递变量是一个类的时候
Top

4 楼CoolSlob()回复于 2004-06-09 11:28:12 得分 0 继续自卑~
Top

5 楼westuser()回复于 2004-06-09 11:32:06 得分 0 juliens(星星球)   :  
  不好意思,没看懂,还是不明白为什么要用它??  
  b=class   of   a;  
  var  
      x:b;//何不直接写成x:a;
Top

6 楼juliens(星星球愛思纯^_^)回复于 2004-06-09 12:02:08 得分 0 如果是x:   a;的话就是定义一个类实例了,也就是对象  
  而x:   b;的话就定义一个元类实例,即类  
  他们的关系是:   元类->类->对象,还不懂吗??
Top

7 楼linzhengqun(风。我回来了)回复于 2004-06-09 12:05:31 得分 20举个例子,当你想动态合建一个控件,但刚开始并不知道具体是什么只知道是TComponent的子类,这时候你可以声明TcomClass=class   of   TComponent;  
  然后声明一个函数CearteCon(comClass:TComclass在这个函数里面你可以create它  
  而当你想创建一个button时,只需要传递Tbutton给函数就行了
Top

8 楼IFindit(寻找其中的乐趣)回复于 2004-06-09 13:13:14 得分 5说得很明白了,类可以做为参数来传递,这应该明白吧!   你知道要传递的类是TForm类,但不是道具体是TForm的哪一个子类,这时类参数就可以声明为(FormClass:TFormClass);如果还不明白就动手写个类作参数的小程序就明白了

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值