设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
11#
发表于 2005-8-31 17:49:00 | 只看该作者
照使用说明来操作,没有效果,为什么?哪里弄错了?条件格式的条件在哪里设置呢?即满足什么条件时用什么样的格式。弄不懂。
12#
发表于 2005-8-31 18:43:00 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
13#
发表于 2005-8-31 19:20:00 | 只看该作者
up
14#
发表于 2005-8-31 19:22:00 | 只看该作者
以下是引用静儿在2005-8-31 8:59:00的发言:

支持 LucasLynn



15#
 楼主| 发表于 2005-8-31 19:34:00 | 只看该作者
以下是引用静儿在2005-8-31 9:49:00的发言:



照使用说明来操作,没有效果,为什么?哪里弄错了?

条件格式的条件在哪里设置呢?即满足什么条件时用什么样的格式。

弄不懂。

别急,我已经考虑到了,有个完整的示范程序正在制作,MDB格式,包含两个例子窗体,晚上就可以发布了。
16#
发表于 2005-8-31 19:42:00 | 只看该作者
Take a look.
17#
发表于 2005-8-31 19:48:00 | 只看该作者
dd
18#
发表于 2005-8-31 20:23:00 | 只看该作者
感谢。你说一下你的思路吗?
19#
 楼主| 发表于 2005-8-31 20:35:00 | 只看该作者
以下是引用CHENZHIRONG在2005-8-31 12:23:00的发言:

感谢。你说一下你的思路吗?



主要的思路就是将一个控件上的多个条件格式分到多个隐藏的控件中,在控件获得和失去焦点的时候,遍历这些控件的条件格式,并进行比较,将符合条件的那条条件格式,复制到控件中。

程序的流程首先是通过初始化函数,识别窗体上所有的控件是否符合本扩展需要的,并且将其包装为截获了控件事件并且建立了条件格式索引表的mfcCtl类,当失去焦点或获得焦点的时候,这个类将截获到事件,并且遍历这个控件的条件格式索引表,进行一一比对(非常困难的过程,本程序至今也未能完美实现,只能实现90%左右),然后将符合条件的条件格式复制到当前控件。

具体的流程,以及程序中使用的关键技术,我过段时间会专门整理成文,作详细的介绍。
20#
 楼主| 发表于 2005-8-31 20:46:00 | 只看该作者
其实在开发这个程序的过程中,对于我而言,最大的感触莫过于对于微软系统的理解。

之前一直很疑惑为什么微软要限制三个条件格式,现在我明白了,微软并不是偷懒,也不是故意不让用户用得舒服,而是条件格式这个东西,是个很占用资源的工具,我曾经完全模拟微软的实现方法,但是经常会导致内存溢出,尤其是在设计模式和运行模式之间多次切换之后。



比方说一个条件格式:表达式为:[Text1]+[Text2] = [Text3],看起来很简单,但是事实上Access需要对这一条条件格式,对三个控件进行全面的监视(数据绑定),其中任何一个发生变化(而不是应用此条件格式的控件发生变化),都将重新判断这个条件表达式。可以这么说,Access为每一个条件格式创建了1-2个常驻内存的数据绑定,而这对于资源的占用,效率的影响,程序的稳定性都是非常致命的。

在Multi-FormatCondition Extension中,我发现了微软的顾虑,而且也证实了这个顾虑的必要性,所以在1.0中,我并没有使用实时的Criteria求值,而是采用了异步方式,这样从功能角度而言,比Access的条件格式差了一点,但是基本够用,同时也避免了大量的系统资源占用。在没有完全解决这个问题之前,本程序将沿用此种方式,直到这个问题被解决,MFC才能完全实现Access条件格式的所有功能。

[此贴子已经被作者于2005-8-31 12:53:10编辑过]

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-29 02:17 , Processed in 0.133640 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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