设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
楼主: LucasLynn
打印 上一主题 下一主题

[模块/函数] 【原创 / 源码】Access多条件格式扩展(Multi-FormatConditions Extension V2)发布

[复制链接]
11#
发表于 2005-9-4 20:48:00 | 只看该作者
另外,在数据表模式下,隐藏的控件都显示出来了。我自己的想法,是否不必附加条件格式控件,附加的控件有两个作用,一是保存条件格式,二是监视控件的值的变化。保存条件格式可以用一数据结构来代替。监视控件的值的变化就用原来定时器的方法。不成熟的意见,仅供参考。
12#
 楼主| 发表于 2005-9-4 20:55:00 | 只看该作者
以下是引用CHENZHIRONG在2005-9-4 12:34:00的发言:



在非绑定控件中,焦点没离开控件,值未保存,条件格式未起作用,这是正常的。

但在绑定控件中,焦点即使没离开控件,控件的值已经保存,这时条件格式应该起作用,你试一下ACCESS的条件格式,是否如此。

我测试了一下你所描述的问题,测试结果如下:

当一个多条件格式控件被指定了“获得焦点”条件格式,一切运行正常,当没有指定获得焦点条件格式时,由于MFCE V2自动为其增加了一条默认格式的“获得焦点”条件格式,导致了对于正常条件格式应用的接管。

这个问题已被证实,并且将在正式版中被解决。非常感谢!
13#
 楼主| 发表于 2005-9-4 20:59:00 | 只看该作者
以下是引用CHENZHIRONG在2005-9-4 12:48:00的发言:

另外,在数据表模式下,隐藏的控件都显示出来了。

我自己的想法,是否不必附加条件格式控件,附加的控件有两个作用,一是保存条件格式,二是监视控件的值的变化。

保存条件格式可以用一数据结构来代替。

监视控件的值的变化就用原来定时器的方法。

不成熟的意见,仅供参考。



附加控件出于两个目的考虑:

1、对于Criteria的求值,Access没有给出明确可用的编程接口,因此目前只能通过数据源绑定来实现。

2、MFCE考虑到符合原有条件格式使用者(很可能不会写代码)的使用习惯,尽可能做到和Access原有使用者的操作方法和界面接近。

PS:目前V2每个附加条件格式控件只能保存和监视一条条件格式,这个局限确实有些不便,我也已经感觉到了,因此准备在正式版中采用一种方法来对于数据进行压缩。使得每个附加条件格式控件依然可以设定三条条件格式。

  具体的方法为将一个Criteria的状态标志为一个2位二进制数值,2进制11代表空条件格式,2进制10代表Null,2进制00代表False,2进制01代表True,然后使用附加条件格式控件存储和监视6位二进制数值,来实现对于三个条件格式的支持。这样可以大大减少用户添加附加条件格式控件的数量,能够缓解一下这个问题。

[此贴子已经被作者于2005-9-4 13:08:54编辑过]

14#
发表于 2005-9-4 21:09:00 | 只看该作者
当没有指定获得焦点条件格式时,由于MFCE V2自动为其增加了一条默认格式的“获得焦点”条件格式,导致了对于正常条件格式应用的接管。

我不明白增加这一条件格式的作用,是用于处理哪种情况?
15#
 楼主| 发表于 2005-9-4 21:38:00 | 只看该作者
以下是引用CHENZHIRONG在2005-9-4 13:09:00的发言:

我不明白增加这一条件格式的作用,是用于处理哪种情况?



因为用户有可能会需要设置“获得焦点”的条件格式,如果把这个条件格式也加入附加条件格式的内容,那么会导致每次用户获得焦点都需要去遍历附加条件格式,并逐个比较。最终找到后还要进行复制。这是MFCE V1的工作方式,其弊端有三个:

1、性能低下,每次获得焦点均要进行大量运算。

2、必须接管多条件格式控件的GotFocus事件,OnGotFocus属性必须为“[Event Procedure]”,这样就限制了用户无法在OnGotFocus属性中使用表达式或者宏。

3、当组合框直接点击下拉获得焦点时,如果发生条件格式复制事件,那么控件将被刷新,下拉菜单将缩回,需要重新点击展开。

你看一下V1的源码,就能够很清楚看到以上三个弊端。

采用了这种方式以后,MFCE V2对用户的事件编程无任何限制,而且大大提高了执行效率。所以在V2中,第一个条件格式保留给了用户。而使用第二条条件格式作为中转。同时我也在考虑,是否把第二个条件格式也留给用户自定义,以设定大频率触发的条件格式,这样做有利于提高程序的性能,毕竟使用Access本身的条件格式效率较为高一点。

[此贴子已经被作者于2005-9-4 13:53:42编辑过]

16#
发表于 2005-9-5 16:54:00 | 只看该作者
ok
17#
 楼主| 发表于 2005-9-5 17:08:00 | 只看该作者
正式版会有较大的改进。API定时器会被取消,因为我已经找到了一种捕获控件值自动变化事件的方法了。
18#
发表于 2005-9-5 17:46:00 | 只看该作者
辛苦LucasLynn了,你这种学习与钻研精神值得每个网友学习!支持!同样也号召大家能将所学的东西共享出来,这样大家就能节省彼此的时间来共同快速进步![em01][em01]
19#
发表于 2005-9-5 17:49:00 | 只看该作者
以下是引用LucasLynn在2005-9-5 9:08:00的发言:



正式版会有较大的改进。API定时器会被取消,因为我已经找到了一种捕获控件值自动变化事件的方法了。



Lucaslynn

让我猜一猜,你难道是用子类的方法?截获ACCESS窗体的消息自己处理。
20#
 楼主| 发表于 2005-9-5 19:41:00 | 只看该作者
以下是引用esmile在2005-9-5 9:46:00的发言:



辛苦LucasLynn了,你这种学习与钻研精神值得每个网友学习!

支持!

同样也号召大家能将所学的东西共享出来,这样大家就能节省彼此的时间来共同快速进步![em01][em01]



等V2基本定稿,我会把V1和V2的源码完全公开的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-23 02:44 , Processed in 0.092592 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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