| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 928 人关注过本帖
标题:请教TonyDeng 老师:创建对象与创建对象引用的区别?等等
只看楼主 加入收藏
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
结帖率:79.38%
收藏
已结贴  问题点数:20 回复次数:4 
请教TonyDeng 老师:创建对象与创建对象引用的区别?等等
TonyDeng 老师:
有关类方面本人不是很清楚也很头痛,想请教一下,能否详细指教?
1、创建对象用crarteobject()与创建对象引用newobject()的区别?
下面摘自vfp9权威指南对这二个命令使用的代码。好象看不出有何区别?
(1) public omyform
   omyform=createobject("form1")
   omyform.visible=.t.
  define class form1 as form
  caption="xxxxxx"
   name="form1"
   enddefine
(2)public omyform
   omyform=newobject("form1")
   omyform.show
   define class form1 as form
   enddefine
2、addobject 与addobject()有何区别?
具体代码不写了
3,对上面的crarteobject()与newobject(),addobject与addobject()具体使用时要注意什么?

[ 本帖最后由 sylknb 于 2011-9-26 10:27 编辑 ]
搜索更多相关主题的帖子: class public xxxxxx 
2011-09-26 10:25
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
CREATEOBJECT()和NEWOBJECT()都是创建对象,但前者只能由类库(VCX)或代码文件(PRG)写好的类中创建对象,而后者则有更大的范围,除了前面两种,还可以创建OLE对象,那是由别的软件提供的类,比如EXCEL文档等。

ADDOBJECT命令,是在类定义中使用的,只能在DEFINE CLASS……ENDDEFINE体中使用。ADDOBJECT()是方法,有些控件提供这种方法,比如FORM类,一般容器类控件,都提供这种方法,这种方法可以在运行代码中调用(前者不行,是在写类代码即设计时写好的),是动态添加控件的手段。

授人以渔,不授人以鱼。
2011-09-26 13:16
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
谢谢了,但还有二个问题
第一个问题,为什么newobject()也是要先类定义,然后再建立对象?
(1) public omyform
   omyform=createobject("form1")
   omyform.visible=.t.
  define class form1 as form
  caption="xxxxxx"
   name="form1"
   enddefine
(2)public omyform
   omyform=newobject("form1")
   omyform.show
   define class form1 as form
   enddefine
第二个问题
addobject 与addobject()都是添加对象。addobject()是向容器中添加对象,而addobject是向容器类中添加对象。容器中添加对象与向容器类中添加对象有何不同?
2011-09-26 15:39
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:20 
再仔细看2楼。创建对象的前提是类必须存在,比如你举书上的例子,对象omyform基于类form1创建,那么必须要能够找到类form1的定义,由于这个form1类是自己写的,所以它的定义代码就写在程序文件中,所举两个例子,都是基于同一个类创建对象,所以都是相同的类代码。2楼说了,CREATEOBJECT()和NEWOBJECT()都可以创建自定义类的对象,在这方面是完全等价的。只有在类不是自己写的时候,比如Excel的OLE控件或多媒体播放器之类,才必须用NEWOBJECT()创建。

第二个问题,你所引用的文字,“容器”是指容器对象实体,“容器类”是容器类定义,就是我2楼所说的东西。对象实体,就是如omyform这样的东西,类,就是如form1这样的东西。同一个类,可以生成无数个对象实体(马是类,抽象的概念,具体的一匹马,才是对象实体,马只是一个概念,但具体的马有无数个,都具备马的共性,只是有不同的个性)。因此,在某个特定的对象实体中,可以用ADDOBJECT()临时给它增加一个属性或控件,这是其它同类实体所没有的。如果在类定义中用ADDOBJECT方法增加控件,那么所有基于这个类生成的对象实体都将有同样的这个控件。

[ 本帖最后由 TonyDeng 于 2011-9-26 21:13 编辑 ]

授人以渔,不授人以鱼。
2011-09-26 18:55
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
讲的太明白了,现在弄清了:只有在类不是自己写的时候,比如Excel的OLE控件或多媒体播放器之类,才必须用NEWOBJECT()创建。当然CREATEOBJECT()也可创建对象。只有类自已写的,要定义类。原来总是糊里糊涂。虽书上有例子,但写的不是很明了。再一次多谢了。
2011-09-26 20:50
快速回复:请教TonyDeng 老师:创建对象与创建对象引用的区别?等等
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024707 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved