Office中国论坛/Access中国论坛

标题: 如何知道子窗体的列宽被改动? [打印本页]

作者: huangxiuwen    时间: 2008-4-5 00:49
标题: 如何知道子窗体的列宽被改动?
求助,请问各位高人。如何知道子窗体(数据表)列a的列宽、列顺序、显示或隐藏是否被改动过?

[ 本帖最后由 huangxiuwen 于 2008-4-5 10:38 编辑 ]
作者: goto2008    时间: 2008-4-5 08:21
怪怪的问题。
作者: huangxiuwen    时间: 2008-4-5 08:58
再顶上去,求各位大哥大姐门帮助.
作者: huangxiuwen    时间: 2008-4-5 11:04
再顶上去,求各位大哥大姐门帮助.
作者: gdfsslec    时间: 2008-4-5 11:09
办法是用一个表来保存这些数据,然后做对比。
作者: andymark    时间: 2008-4-5 11:18
这样做有何意义,  倒不如直接用连续窗体
作者: huangxiuwen    时间: 2008-4-6 22:56
各位大哥大姐,我们知道,ACCESS生成MDE格式之后,数据表类型的子窗体如果改变列宽、列顺序、显示或隐藏之后,ACCESS并不会保存改变后的状态,MDB格式ACCESS能记忆。小弟现在的做法,在子窗体关闭时,删除之前记录该子窗体各列状态的记录,然后再把子窗体当前各列的状态重新记录到一个表中。在子窗体加载时,再把记录该子窗体各列的列宽、列顺序、显示或隐藏的状态记录应用到当前加载的子窗体。如果能知道子窗体各列的列宽、列顺序、显示或隐藏是否改变过,那在子窗体关闭时,就可以做判断,如果子窗体各列状态被改过,则删除之前记录该子窗体各列状态的记录,并把当前各列的状态重新记录到表中。如果没有被改动过。则直接关闭子窗体。不需要删除之前记录该子窗体状态的记录,并重新记录当前子窗体各列的状态。这样做可以提高窗体关闭的速度。
作者: huangxiuwen    时间: 2008-4-7 00:37
再顶上去.求高人解决.
作者: gdfsslec    时间: 2008-4-7 13:02
难怪觉得你问的怪
不用那么麻烦,就在窗体关闭事件记录这些参数就是了,不管它之前的数据是什么,没必要对比,这样做的速度好过你对比,甚至还要删除添加什么的,更麻烦
作者: huangxiuwen    时间: 2008-4-7 14:58
谢谢....................................
作者: goto2008    时间: 2008-4-7 15:21
我还是不明白,楼主为什么要知道列宽有没有被改动??这样做有什么意义了    [:39]

呵呵
作者: huangxiuwen    时间: 2008-4-7 17:29
TO:goto2008
7楼的回复,就是解答你的问题的.
作者: andymark    时间: 2008-4-7 17:58
设一个表来专门记录子窗体的相关数据,加载时直接调用表里的数据进行相关的设置,如果子窗体有改动或隐藏的保存到表里即可
作者: huangxiuwen    时间: 2008-4-7 21:34
andymark兄,我的想法也是跟你一样的.但你是如何知道子窗体有改动或隐藏的呢?
作者: andymark    时间: 2008-4-7 21:57
直接通过按钮保存,对于隐藏显示项目可通过专用的窗体来设置

下面我是用Vsflexgrid做的例子,其实原理是一样的

调整前的主界面
[attach]29499[/attach]


通过显示项目来设置项目是否显示

[attach]29500[/attach]

设置后显示结果

[attach]29501[/attach]

也可以对列宽进行保存和恢复
作者: 咱家是猫    时间: 2008-4-7 22:00
两个方法:
1 与原记录表中的值对比对,呵呵,你肯定不想用这个方法,那你还不如不比对,直接保存呢.
2 声明一个窗体级变量,来记录是否改变,当然,这个变量在记录当前事件上要恢复为0,当你有改变列宽或隐藏/显示字段等动作时,就赋值为-1,呵,此方法不知你满意不.
作者: 咱家是猫    时间: 2008-4-7 22:02
andymark提供的也是一个方法,用表来设置列宽与显示与否,敝掉鼠标动作算了.也省了再判断保存这一步了.
作者: goto2008    时间: 2008-4-8 00:41
andymark大哥做的界面。。
看上去很专业哦。。[:50]
作者: Grant    时间: 2008-4-8 01:07
记得家猫不是曾经研究过?
作者: huangxiuwen    时间: 2008-4-9 08:50
TO:andymark 兄:
我原先的设计也是跟你一样的。但后来发现这种设计不够方便、直观,所以就改成现在的方式(与EXCEL相似)不用每次改动时,都需要打开一个固定的窗体或点击保存按钮。
TO:咱家是猫兄:
1 与原记录表中的值对比对,呵呵,你肯定不想用这个方法,那你还不如不比对,直接保存呢.
(呵呵,是呀。)
2 声明一个窗体级变量,来记录是否改变,当然,这个变量在记录当前事件上要恢复为0,当你有改变列宽或隐藏/显示字段等动作时,就赋值为-1,呵,此方法不知你满意不.
(这种方法正是我想要的。但你是如何知道改变列宽或隐藏/显示字段等动作,并赋值-1给变量呢?求监视改变列宽或隐藏/显示字段等动作时赋值-1给变量的代码。)

[ 本帖最后由 huangxiuwen 于 2008-4-9 09:01 编辑 ]




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3