注册 登录
编程论坛 VFP论坛

谁能通俗地告诉我Destroy事件是怎么回事?

zmkm 发布于 2023-11-07 19:00, 845 次点击
    Destroy事件,手册上说,当释放一个对象时,发生此事件。后面还有说,一个容器对象的Destroy事件在它所包含的任何一个对象的Destroy事件之前触发;......
    我看不懂这些解释的意思,谁能通俗地,或举个例子,说这个事件到底是干什么的?
24 回复
#2
吹水佬2023-11-07 19:05
就是事件触发先后,在各事件中观察一下就清楚了
#3
iswith2023-11-07 21:08
表单视为父,其内视为子,子先发生Destroy,后才到父“Destroy”,至于子的先后顺序,你这个应该是添加的顺序
#4
csyx2023-11-07 21:39
以下是引用iswith在2023-11-7 21:08:45的发言:

表单视为父,其内视为子,子先发生Destroy,后才到父“Destroy”,至于子的先后顺序,你这个应该是添加的顺序

顺序反了,Init 才是先子后附父
#5
iswith2023-11-07 21:47
以下是引用csyx在2023-11-7 21:39:00的发言:


顺序反了,Init 才是先子后附父
,哈哈。。。是反了。。。。
#6
csyx2023-11-07 22:07
正常,vfp 无论是创建还是销毁的顺序,都与直觉相反,反人类设计
#7
zmkm2023-11-07 22:24
还是晕。谁给个简单的例子说明一下行吗?
#8
吹水佬2023-11-07 23:09
以下是引用csyx在2023-11-7 22:07:18的发言:

正常,vfp 无论是创建还是销毁的顺序,都与直觉相反,反人类设计

可能是用“栈”处理的原因
#9
laowan0012023-11-08 07:52
以下是引用csyx在2023-11-7 22:07:18的发言:

正常,vfp 无论是创建还是销毁的顺序,都与直觉相反,反人类设计

所以才需要专业的技术人员
#10
laowan0012023-11-08 07:55
以下是引用zmkm在2023-11-7 22:24:56的发言:

还是晕。谁给个简单的例子说明一下行吗?

要搬家了,最后再看一眼房子
#11
zmkm2023-11-08 09:25
以下是引用laowan001在2023-11-8 07:55:21的发言:


要搬家了,最后再看一眼房子

你看我理解的对不对:
在quit之前,让Destroy执行:
close data
clear all
thisform.lable1.caption="abcd"
上述代码其实也可以写在有quit的那个控件中。两者的效果一样。我写程序时完全可以不用Destroy,只是代码可能又重复而已。
如果理解的不对,请批评。多谢
#12
zmkm2023-11-08 09:28
回复 11楼 zmkm
你看我理解的对不对:
在quit之前,让Destroy执行:
close data
clear all
thisform.lable1.caption="abcd"
上述代码其实也可以写在有quit的那个控件中。两者的效果一样。我写程序时完全可以不用Destroy,只是代码可能又重复而已。
如果理解的不对,请批评。多谢
#13
gs25367856782023-11-08 09:44
楼主提出的问题,说明了可能你没有经历过正规教育
如今的面向对象的程序,你想掌握它,必须要知道
属性,事件,方法
三个基本知识,而这三个基本知识需要你花时间自己
去实践探索。
#14
laowan0012023-11-08 10:02
以下是引用zmkm在2023-11-8 09:25:27的发言:


你看我理解的对不对:
在quit之前,让Destroy执行:
close data
clear all
thisform.lable1.caption="abcd"
上述代码其实也可以写在有quit的那个控件中。两者的效果一样。我写程序时完全可以不用Destroy,只是代码可能又重复而已。
如果理解的不对,请批评。多谢


可以这样测试一下
在控件的Destroy、unload等事件中写个messagebox('每个事件写不同的内容,以示区别'),然后观察显示的顺序
在我实际应用当中,很少用到对Destroy事件编程
#15
mywisdom882023-11-08 12:30
执行顺序
表单Load->控件Init->表单Init

表单Destroy->控件Destroy->表单Unload

#16
zjj19742023-11-08 17:24
就是程序释放时,放在容器Destroy中的命令先执行,容器里面控件Destroy中的命令后执行
#17
zmkm2023-11-08 21:07
以下是引用laowan001在2023-11-8 10:02:22的发言:



可以这样测试一下
在控件的Destroy、unload等事件中写个messagebox('每个事件写不同的内容,以示区别'),然后观察显示的顺序
在我实际应用当中,很少用到对Destroy事件编程



我明白了。多谢。
只有本站会员才能查看附件,请 登录
#18
zmkm2023-11-08 21:37
以下是引用gs2536785678在2023-11-8 09:44:43的发言:

楼主提出的问题,说明了可能你没有经历过正规教育
如今的面向对象的程序,你想掌握它,必须要知道
属性,事件,方法
三个基本知识,而这三个基本知识需要你花时间自己
去实践探索。

35年前,我用unix/foxpro和unix/informax写过中型程序,给200多人用,是多用户的。仅仅一个打印模块就1万行,要一个字符一个字符去打,把0换成空格。菜单也写很长@(2,2)say “请输入” get _mark1
以后25年不干了。
现在无聊,找VFP玩玩,防止痴呆。
属性、事件、方法的意思我当然懂。但不是所有方法和事件都用。看别人的代码遇到不明白的方法就查手册。手册文绉绉的弄不懂就到这里问问。如果是做一个要用的程序,很快就能拼凑出来。只是我想知道一件事有很多方式实现,有高明的或和我思路不一样的方法就觉得有趣。
希望各位高手教教我。像“自己去实践探索”之类的教诲用处不大,还浪费你打字的时间。
顺便告诉你,我正规的教育是1981年数学系计算机工程专业,毕业设计是自己做的关系型数据库。
#19
laowan0012023-11-09 08:09
回复 18楼 zmkm
老狐狸啊
#20
schtg2023-11-09 08:51
回复 18楼 zmkm
老狐狸啊
#21
pvm20002023-11-09 10:13
回复 18楼 zmkm
退休了,再玩VFP
#22
aqyejun2023-11-10 10:14
三人行必有我师!
#23
sam_jiang2023-11-10 19:00
回复 18楼 zmkm
81年的时候,应该还是dbase吧?那时能接触到编程的大学都应该很少,我们94年,还在学dbase,foxbase,向老狐狸致敬!
#24
huasinstamps2023-12-14 10:27
回复 10楼 laowan001
这里要停了吗。。。搬家有方向吗
#25
sostemp2023-12-19 09:13
三人行必有我师!
1