设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[原创][学习笔记]在Access中使用非标准(customer)控件

[复制链接]
跳转到指定楼层
1#
发表于 2009-1-4 10:21:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
所谓customer control是指不是ACCESS VBA工具箱里自带的控件,而是第三方控件,一般是ActiveX控件,使用前需要注册。比如微软的treeview控件,listview控件,imagelist控件就是属于customer control.

昨天下载了FMS的Total Access Components(敲字太累,以下简称TAC了哈)试用,里面的帮助文件里有一章专门讲解customer control的使用,我以前在使用过程中出现的一些问题在里面都有充分的阐述。做笔记和思考如下:

1、container 以及z order问题
所谓container是指容器,比如选项button的容器是选项组。在VB里container的属性是被广泛支持的,你常常可以随意设置变换一个控件的容器,这样可以轻易地把一个控件从一个容器里放到另一个容器里。但是Access里对container的支持很弱,几乎没什么内置控件有这个属性,对于有这个属性的customer控件也不支持。比如,昨天我当了componentone的sizer控件,按照说明把C1elastic控件放在窗体上之后,再根据说明想把其他控件drop到它上面(也就是以它为container),死活放不上去。7得我抓狂。还以为是ACCESS窗体的事,后来费了半天劲把用户窗体(userform)折腾出来,还是不成。看了FMS的帮助,才知道ACCESS压根儿不支持容器。你说气人吧?!

随着容器问题而来的还有Z ORDER问题。所谓Z order就是指控件在垂直屏幕的方向(Z轴)上的排列顺序,也就是谁盖在谁上面。在ACCESS中,customer control不仅不能当容器,不能接受其他控件放在它里面;而且也不能接受放在它上面!!这句话的意思是,不管你在设计视图怎么设置其他控件的Z ORDER顺序在customer control控件的上面,到了窗体视图,却始终是cutomer control在最上层。所以,如果你希望要一个标准button盖在一个自定义的tab上的窗体效果,没门儿。

既然有问题就要想办法解决。FMS解决的办法很搞笑,不过既然人家是专业做ACCESS支持开发的,看来这也是没办法的办法了。举个例子来说明FMS的办法吧。TAC里有个TAB控件,这个控件有一些ACCESS VBA自带的TAB控件所不同的功能。用过标准的TAB控件的朋友都知道,它的每个选项卡是个容器,容纳其中的控件,不同的选项卡里包含不同的控件。可是TAC的TAB由于是customer 控件,不能当container使用,它只好"假装"自己是container。假装的办法有两种:
(1)Cycle through the appropriate controls and set the Visible property to True or False, depending on whether that control belongs to the current page.
(2)Use subform controls to group and contain objects.
呵呵。是不是有点搞笑?

最搞笑的还不止于此。看看FMS是如何解决Z ORDER问题的,还是两种方案如下:
(1)把TAB控件缩小到只有页头(strip control),然后另外画个矩形框假装是TAB控件的下边缘,然后把“属于”这个页面的控件放在矩形框里。由于矩形框是内置控件,所以就规避了Z ORDER问题。呵呵。
(2)还是把TAB控件弄小到strip control;然后弄一个一模一样的TAB控件,然后把这个可见的TAB控件convert to image。由于image是内置控件,所以……


2、Complete Word功能
对于普通的内置控件,在coding的时候,如果你写“控件名.",VBA的IDE会自动给出该控件的可用方法和属性等;可是对cutomer 控件就不行。对customer控件,当你敲了控件名加一点,后面给出的方法和属性只是一些控件的共有属性和方法,却没有列出这个控件特有的自定义属性和方法。规避的方法是设置一个object变量,我就不多说了,观察比较下面两个图就行了……



3、Attaching Labels
许多内置的VBA控件自带标签,标签可以随关联控件移动,并且可用于指定供用户选定该控件的快捷键。customer控件不具备自动标签功能,不过可以手动给它添标签。步骤:
(1)先写个label
(2)把它ctrl+x
(3)点击自定义控件,然后ctrl+v。这时候你会发现这个标签就和咱们的customer control关联在一起了。


4、自定义事件过程
普通控件的可用事件过程可以在属性页里看到并定义,对customer control则情况不同。在customer control的属性页里你只能看到一些通用的事件,而大部分customer control特有的事件过程只能直接在VBA IDE的模块的下拉列表里找到。

[ 本帖最后由 slowgrace 于 2009-1-4 10:25 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2009-1-6 14:21:39 | 只看该作者
费了好些劲写的,没人看,自己丁页一哈
3#
发表于 2009-1-16 00:24:17 | 只看该作者
支持原创,大篇幅,慢慢看
4#
发表于 2009-3-11 13:28:04 | 只看该作者
很厉害很厉害
5#
发表于 2009-3-11 13:29:59 | 只看该作者
支持支持
6#
发表于 2009-4-18 09:00:03 | 只看该作者
不懂
7#
发表于 2009-7-24 15:16:01 | 只看该作者
头晕!
8#
发表于 2009-9-24 20:14:42 | 只看该作者
支持,虽然看的不是很懂。
9#
发表于 2010-3-27 22:19:07 | 只看该作者
支持支持
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-1 18:26 , Processed in 0.097785 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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