| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1307 人关注过本帖
标题:在 init 事件用代码新建表单属性与用新建属性对话框新建属性二者有何不同?
只看楼主 加入收藏
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1536
专家分:180
注 册:2006-6-3
结帖率:79.38%
收藏
已结贴  问题点数:20 回复次数:18 
在 init 事件用代码新建表单属性与用新建属性对话框新建属性二者有何不同?
在init事件用代码新建表单属性与用新建属性对话框新建属性二者有何不同?
搜索更多相关主题的帖子: 对话框 新建 
2014-09-15 11:26
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:7 
知道init事件在什么时候触发就明白了

授人以渔,不授人以鱼。
2014-09-15 11:39
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1536
专家分:180
注 册:2006-6-3
收藏
得分:0 
以下是引用TonyDeng在2014-9-15 11:39:26的发言:

知道init事件在什么时候触发就明白了
是表单中的各个对象,哪它与对话框新建属性有何关系?
2014-09-15 11:47
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:654
专家分:2167
注 册:2014-2-7
收藏
得分:7 
1. 使用新建属性对话框只能建立表单属性或表单集属性,而使用 AddProperty方法则可以为任意控件新建属性
2. 使用新建属性对话框建立的属性可以在表单的LOAD事件、控件的Init事件或其他事件中引用,也可以设置为控件的数据来源。但在 Init 事件中使用AddProperty方法中新建的属性,不能在表单的LOAD事件或其他在Init之前发生的事件中引用,也不能作为控件的数据来源。比如:在表单Init事件中新建的属性就不能在表单控件的Init中引用,因为控件的Init事件发生在表单的Init之前。

泉城飞狐
2014-09-15 11:52
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:7 
向楼上学习
2014-09-15 11:59
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用sylknb在2014-9-15 11:47:34的发言:

是表单中的各个对象,哪它与对话框新建属性有何关系?


任何对象(包括窗体)都可以用这两种方式创建属性。在init事件中建立的属性,必须在该对象生成之后才生效,这个生成就是init事件触发的时刻,而此时这些属性可以影响(本身之外)的对象,却取决于对方是否已经生成——对象是按照代码书写的顺序建立的。在表单对话框新建的属性,是在类构造时原生就有的,它在类代码中,一开始就存在,可视为天生属性。这就是两者的区别。

授人以渔,不授人以鱼。
2014-09-15 12:03
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
换言之,在类代码设计器中新建的属性,是静态的,在init事件中新建的属性,是动态的。什么时候用什么,取决于应用实际,有些属性要根据当时的数据环境动态建立,此时就不可能在类代码中原生,实际上有很多很多你想不到的需求导致要动态建立属性。最关键的问题,是要掌握vfp对象体系中各种事件的触发时机和顺序,这才是核心,不熟悉这个,就只能写一揽子代码,把所有东西都写到一个事件或方法中,形成大杂烩。

授人以渔,不授人以鱼。
2014-09-15 12:19
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
不少人建议要么在窗体的load中写,要么在窗体的init中写,几乎不会在窗体容器下控件的load或init甚至更具体的事件中写代码,就是这个原因,这种代码写出来,必然是耦合性强的代码。

授人以渔,不授人以鱼。
2014-09-15 12:33
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1536
专家分:180
注 册:2006-6-3
收藏
得分:0 
1。二位都讲的很有道理,特别TonyDeng理论性强,一时不能更好理介,但对我们一些菜鸟有时迷糊,只能具体做,只知其然不知其所以然,最好能举些实例作一对比。
2“任何对象(包括窗体)都可以用这两种方式创建属性。在init事件中建立的属性,必须在该对象生成之后才生效,这个生成就是init事件触发的时刻,而此时这些属性可以影响(本身之外)的对象,却取决于对方是否已经生成——对象是按照代码书写的顺序建立的”此句中(本身之外)是指什么?是不是指影响本身之外的对象,自已不影响?
3。二位行家对用对话框新建属性与用AddProperty 方法的论述好象从字面上来理介有所不同?
TonyDeng:   任何对象(包括窗体)都可以用这两种方式创建属性。
liuxingang2:  使用新建属性对话框只能建立表单属性或表单集属性,而使用 AddProperty方法则可以为任意控件新建属性
图片附件: 游客没有浏览图片的权限,请 登录注册

它不是表单用AddProperty方法来新建属性吗?


4,方法与函数二者有何区别?例如“ADDPROPERTY( ) 函数与AddProperty 方法


[ 本帖最后由 sylknb 于 2014-9-15 16:55 编辑 ]
2014-09-15 16:37
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:654
专家分:2167
注 册:2014-2-7
收藏
得分:0 
新建属性对话框有如下特点:
1. 是在设计模式下为表单或表单集添加属性的唯一方法。
2. 当存在表单集时,新属性被添加到表单集;当不存在表单集时,新属性被添加到表单。
3. 不可能用这种方法为表单或表单集之外的其他控件添加属性。

严格来说,AddProperty 是控件的一个方法,其调用形式类似于函数,是在运行模式下为控件添加属性的方法。

如果再听不懂,我可要打你的屁屁了!

泉城飞狐
2014-09-15 20:09
快速回复:在 init 事件用代码新建表单属性与用新建属性对话框新建属性二者有何不 ...
数据加载中...
 
   



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

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