标题:表单需要运行多个实例,编程时需要注意哪些问题?
只看楼主
xs591222
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:28
帖 子:680
专家分:1287
注 册:2009-3-1
得分:17 
这样的高难度百分英雄贴,只能有看的份罗哦……学习中……
2014-07-13 20:43
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
不要定义和使用全局变量,这话似乎很简单,但并不那么容易做到。很多人喜欢用DO 过程名 WITH 参数列表的方式调用过程(特别是启动表单),但这已经踏入了使用全局变量的陷阱,因为这种参数传递方式默认是引用传递,被调用过程中的形参实质上是外部数据的真身,等于使用了全局变量,除非你很谨慎(或巧合)地避免了对这种数据的修改——问题在于你是否有这种风险意识。

授人以渔,不授人以鱼。
2014-07-14 10:11
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
表单(用.scx编制的)程序,用DO方式启动时,直接创建的是对象实例,反复DO多次这个.scx,就是多次创建同一实例,它不是从虚的类派生出来的不同实例(用.vcx创建),而是复制(克隆)同一实例出来的新对象,以这种方式创建的新对象,必须全盘调整其属性和参数,否则就与原对象互相牵连。我刚开始接触VFP编程的时候,也曾经用过.scx方式,但很快就放弃了,因为这个问题是相当严重的,在理论上,也不是面向对象编程的正路。但是,习惯是很难改变的。

[ 本帖最后由 TonyDeng 于 2014-7-14 10:22 编辑 ]

授人以渔,不授人以鱼。
2014-07-14 10:21
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:0 
表单不同名的问题我想这样解决:在表单的INIT事件中写代代码修改成一个唯一的文件名,不知可行否。

活到老,学到老! http://www. E-mail:hu-jj@
2014-07-14 19:59
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
在表单init事件发生的时候,其内部所有控件都已经创建和初始化数据完毕了(子控件的init事件发生在父控件的init事件之前),该犯错的都已经犯了,轮不到表单的init事件来纠正。不用到表单的name就好,至少表单的内部代码不使用这个东西。

[ 本帖最后由 TonyDeng 于 2014-7-14 20:07 编辑 ]

授人以渔,不授人以鱼。
2014-07-14 20:02
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:0 
准备下周开始动手测试,出现问题时再逐个解决,应该可以找到方法的。

活到老,学到老! http://www. E-mail:hu-jj@
2014-07-14 20:07
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
当然要经历逐个解决问题的阶段,但逐个解决的问题,跟往后再碰到的问题有可能会牵连,到时会发现当初的解决方案不是一揽子方案,到发现更好的方案时,才知道那比原先的个别解决直截了当得多。不过,那个阶段是必须经历的。

授人以渔,不授人以鱼。
2014-07-14 20:11
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:0 
正因为如此,所以我在动手之前先向各位讨教,就可以少走弯路。

活到老,学到老! http://www. E-mail:hu-jj@
2014-07-15 06:40
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:0 
虽然结贴了,但是还希望各位继续传授经验、体会或者想法!

活到老,学到老! http://www. E-mail:hu-jj@
2014-07-15 06:43
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
理论上就不存在运行多次同一表单的问题,应该是创建多个表单,而这多个表单有一个共同的基本模板,它们之间的区别状态(属性、数据等)在创建时动态输入,共同点则在模板中继承。创建多个表单,与用一个表单异化出多个变体,有质的区别。类就是设计蓝图,一张零件的设计图规定了尺寸和形状,但可以不规定涂层颜色,根据这张图制造的不同零件,规定处必然是一样的,但制造的时候就已经涂上了不同的颜色,所以它们都是独立的个体,互不相干;但若是把一个现成的产品当作模板来另造零件,则需要自己刨除原先产品的独特属性,你顶多先克隆出一模一样的产品,然后把颜色抹掉,重新涂色,等等。这之间的差异大了。

授人以渔,不授人以鱼。
2014-07-15 08:54



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-433963-1-1.html




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

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