设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 3233|回复: 12
打印 上一主题 下一主题

[模块/函数] 如何取得状态栏上的进度条???

[复制链接]
跳转到指定楼层
1#
发表于 2007-10-4 15:14:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,不知可否实现??
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2007-10-4 15:50:49 | 只看该作者
不知是否指这个,通过SysCmd 读取,具体参考SysCmd 方法的使用

SysCmd 方法
使用 SysCmd 方法可以在状态栏上显示一个进度表或可选的指定文本,返回有关 Microsoft Access 及其相关联文件的信息或者返回指定数据库对象的状态(以指示该对象是否已打开,是否是一个新对象或是否已被更改但还没有保存)。Variant。

expression.SysCmd(Action, Argument2, Argument3)
expression    必需。此表达式返回“应用于”列表中的其中一个对象。

Action   必需 AcSysCmdAction。下列固有常量之一,用于标识要采取操作的类型。下列常量集适用于进度表。如果这些操作执行成功,SysCmd 方法将返回一个 Null。否则,Microsoft Access 会产生运行时错误。

AcSysCmdAction 可以是下列这些 AcSysCmdAction 常量之一。
acSysCmdAccessDir。返回 Msaccess.exe 所在目录的名称。
acSysCmdAccessVer。返回 Microsoft Access 的版本号。
acSysCmdClearHelpTopic
acSysCmdClearStatus。下列常量提供了有关数据库对象状态的信息。
acSysCmdGetObjectState。返回指定数据库对象的状态。当使用该 action 值时,您必须指定 argument1 和 argument2。
acSysCmdGetWorkgroupFile。返回工作组文件 (System.mdw) 的路径。
acSysCmdIniFile。返回与 Microsoft Access 相关联的 .ini 文件的名称
acSysCmdInitMeter。初始化进度表。当使用该操作时,您必须指定 argument1 和 argument2 参数。
acSysCmdProfile。当用户从命令行启动 Microsoft Access 时,返回其指定的 /profile 设置。
acSysCmdRemoveMeter。删除进度表。
acSysCmdRuntime。如果运行时版本的 Microsoft Access 正在运行,将返回 True (–1)。
acSysCmdSetStatus。将状态栏文字设置为 text 参数。
acSysCmdUpdateMeter。使用指定值更新进度表。当使用该操作时,您必须指定 text 参数。

Argument2   可选 Variant。字符串表达式,用于标识要在状态栏以左对齐方式显示的文字。当 action    参数是 acSysCmdInitMeter、acSysCmdUpdateMeter 或 acSysCmdSetStatus 时,该参数是必需的;对于其他 action 参数值,该参数是无效的。


注释  在为 Action 参数指定 acSysCmdGetObjectState 值时,必须指定相应的 acObjectType。


acTable
acQuery
acForm
acReport

acMacro

acModule

acDataAccessPage

acDefault

acDiagram

acServerView

acStoreProcedure

对于其他 action 参数值,该参数是无效的。


Argument3   可选 Variant。数值表达式,用于控制进度表的显示。当 action    参数是 acSysCmdInitMeter 时,该参数是必需的;对于其他 action 参数值,该参数是无效的。


注释  在为 Action 参数指定 acSysCmdGetObjectState 值时,必须指定数据库对象的名称。


说明
例如,如果您正在创建一个向导,该向导可创建新的窗体,那么可以使用 SysCmd 方法显示进度表,以便在向导建立窗体时指示其进度。

通过调用各种进度表操作的 SysCmd 方法,您可以在状态栏中为具有已知持续时间或步骤数的操作,显示进度表,并将其更新为指示操作的进度。

若要显示状态栏中的进度表,您必须首先调用 acSysCmdInitMeter action 参数以及 text 和 value 参数的 SysCmd 方法。当 action 参数是 acSysCmdInitMeter 时,value 参数将是进度表的最大值,100 %。

若要将进度表更新为显示操作的进度,请调用 acSysCmdUpdateMeter action 参数以及 value 参数的 SysCmd 方法。当 action 参数是 acSysCmdUpdateMeter 时,SysCmd 方法将使用 value 参数计算由进度表显示的百分比。例如,如果您将最大值设置为 200,然后使用值 100 更新该进度表,那么将只填充该表的前半部分。

您也可以更改显示在状态栏上的文字,方法是调用 acSysCmdSetStatus action 参数和 text 参数的 SysCmd 方法。例如在排序过程中,您可以将文字更改为“正在排序中...”。当排序完成后,您可以通过删除该文字重置状态栏。text 参数可以包含大约 80 个字符。因为状态栏文字是通过使用非等宽字体显示的,因此,您能够显示的实际字符数将由 text 参数指定的所有字符的总宽度决定。

当您增大状态栏文字的宽度时,将会减小表的长度。如果文字的长度超过状态栏,并且 action 参数是 acSysCmdInitMeter,那么 SysCmd 方法将忽略文字,而不会在状态栏上显示任何内容。如果文字的长度超过状态栏,并且 action 参数是 acSysCmdSetStatus,那么 SysCmd 方法将截断文字以适合状态栏。

您不能将状态栏文字设置为零长度字符串 (" ")。如果要从状态栏删除现有文字,请将 text 参数设置为单个空格。下例说明了如何从状态栏删除文字:

varReturn = SysCmd(acSysCmdInitMeter, " ", 100)
varReturn = SysCmd(acSysCmdSetStatus, " ")
               
如果在通过调用 acSysCmdSetStatus action 参数的 SysCmd 方法设置文字时,已显示进度表,那么 SysCmd 方法将自动删除该表。

调用其他操作的 SysCmd 方法,以便确定有关 Microsoft Access 的系统信息,其中包括正在运行的 Microsoft Access 的版本号、它是否是运行时版本、Microsoft Access 可执行文件的位置、在命令行中指定的 /profile 参数的设置以及与 Microsoft Access 相关联的 .ini 文件的名称。

注释  现在,Microsoft Access 的常规设置和自定义设置被保存在 Windows 注册表中,因此您可能不需要 Microsoft Access 应用程序带有 .ini 文件。acSysCmdIniFile action 参数的存在是为了与早期版本的 Microsoft Access 兼容。

调用 acSysCmdGetObjectState action 参数和 objecttype 及 objectname 参数的 SysCmd 方法,以便返回指定数据库对象的状态。一个对象可以是以下四种可能的状态之一:未打开或不存在、打开、新或者更改后尚未保存。

例如,如果您正在设计将新字段插入表中的向导,则需要确定表结构是否在更改后没有保存,以便您可以在修改它的结构之前进行保存。您可以检查由 SysCmd 方法返回的值以确定表的状态。

acSysCmdGetObjectState action 参数的 SysCmd 方法可以返回下列常量的任意组合:

常量 数据库对象的状态 值
acObjStateOpen 打开 1
acObjStateDirty 更改后未保存 2
acObjStateNew 新建 4


注释  如果由 objectname 参数引用的对象未打开或不存在,那么 SysCmd 方法将返回零值。

在窗体中添加 ActiveX 控件后,下列代码可用于在表达式中启用 ActiveX 控件:

SysCmd 14, "<ActiveX Control GUID>"

注释  使用标识需要在表达式中启用的 ActiveX 控件的全局唯一标识符 (GUID) 替换 <ActiveX Control GUID>。

注释  将 ActiveX 控件添加到许用控件列表后,就不能删除 ActiveX 控件。
3#
 楼主| 发表于 2007-10-4 16:18:29 | 只看该作者
谢谢!
我的意思是说,取得状态栏上进度条的值,
在窗体上显示出来,好让窗体上的进度条跟状态栏上的进度条一致
4#
发表于 2007-10-4 21:58:43 | 只看该作者
我也想知道
5#
发表于 2007-10-4 22:12:51 | 只看该作者
这个要计算各个机器的差异了,机器性能的不一致就会影响你的进度条,我的进度条为了节省程序空间,做了个倒计时的提示!
6#
 楼主| 发表于 2007-10-5 12:06:30 | 只看该作者
快慢没关系,只要能同步显示就行
7#
 楼主| 发表于 2007-10-8 23:28:58 | 只看该作者
还没人理啊,自己顶一下
8#
发表于 2007-10-8 23:37:51 | 只看该作者
既然是在窗体里显示,又何必再调用系统的进度条呢?而且也不可能完全同步的。如果你曾安装过WINDOW系统,就知道微软自已做的进度条显示剩余多少时间,也是不完全正确的
9#
发表于 2007-10-9 04:02:51 | 只看该作者
样子而已,何必太过在意
10#
 楼主| 发表于 2007-10-9 10:56:10 | 只看该作者
谢谢先!!!!
我只想如果数据量比较大的时候(比如导出时),能出现进度条。
自己做的进度条跟系统的进度条差别太大,
就算系统进度条不精确,也比自己做的要准一点啊。
所以才有此想法,记得以前好像见过的。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-29 02:07 , Processed in 0.111226 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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