设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1707|回复: 7
打印 上一主题 下一主题

[模块/函数] 窗体中 combobox绑定类模块后,关闭窗体出现卡死现象

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2016-7-1 14:51:43 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是为什么??
来自: 微社区
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2016-7-1 15:05:59 | 只看该作者
看看窗体的unload事件或者类模块的Class_Terminate()有没有释放类模块。
set xx=nothing之类。

点击这里给我发消息

3#
 楼主| 发表于 2016-7-1 15:17:17 来自手机 | 只看该作者
释放了就可以了是吗?
R神!
类模块本身也可以在类模块中释放自己??
来自: 微社区
4#
发表于 2016-7-1 16:23:25 | 只看该作者
doney88 发表于 2016-7-1 15:17
释放了就可以了是吗?
R神!
类模块本身也可以在类模块中释放自己??

类模块内置有个初始化事件跟一个终止事件的。
5#
发表于 2016-7-2 11:23:22 | 只看该作者
本帖最后由 ganlinlao 于 2016-7-2 11:30 编辑

vba的类,是com的类,它不是普通人们所谈的oop的类,它很特殊。
1、VBA的每一个类,背后都有一个iclassFactory,每一个vba类背后都有一个看不见的类工厂。微软为了方便,让你在写vba的类时,自动帮你写好了类工厂。类工厂也是一个com类,同样也是只有接口(所有的com类包括vba的类都只有接口,不能继承)。iclassFactory当中有一个重要的方法createinstance。这个才是vba类的构造函数,等同于constructor(构造函数)。也就是说VBA的类的构造函数是在外部,而不是在类模块中
Createinstance是可以带参数的构造函数。
2、Class_Terminate()作用等同于类的Deconstructor(析构函数)。析构函数不能重载,而且在每一个类中,必须是唯一的。
无论在任何情况下,当Release一个VBA类时,Class_Terminate()的代码一定会被自动执行。所以析构函数是在VBA类的自身。

3、com是真正的跨语言的,所以com类是无法继承的,c++写的com类,怎么被vba继承呢,怎么被delphi继承呢,这是做不到的。vba的类是com的类,所以vba类永远只有接口,而没有继承。

4、vba的类,只能通过消息机制。两个类才有办法进行通信,而且是异步的消息机制。

一句话:VBA的类由外部构造实例,而由自身销毁自己。

点评

谢谢回答  发表于 2016-7-4 04:44

点击这里给我发消息

6#
 楼主| 发表于 2016-7-4 04:43:32 来自手机 | 只看该作者
ganlinlao 发表于 2016-7-2 11:23
vba的类,是com的类,它不是普通人们所谈的oop的类,它很特殊。
1、VBA的每一个类,背后都有一个iclassFac ...

不明觉厉!

点击这里给我发消息

7#
 楼主| 发表于 2016-7-4 04:43:58 来自手机 | 只看该作者
ganlinlao 发表于 2016-7-2 11:23
vba的类,是com的类,它不是普通人们所谈的oop的类,它很特殊。
1、VBA的每一个类,背后都有一个iclassFac ...

不明觉厉!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-1 06:21 , Processed in 0.306631 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表