弹出方式、模式、对话框边框与acDialog参数透析
时 间:2008-01-04 22:05:05
作 者:咱家是猫 ID:85 城市:广州
摘 要:弹出方式、模式、对话框边框与acDialog参数透析
正 文:
在窗体的属性中有[弹出方式]、[模式]、[边框样式]几个属性,在打开窗体的VBA命令中有acDialog参数,下面详细讲下这几个属性和这个参数的作用。
在讲之前,先阐述下“对话框”概念:简单的讲,对话框窗体即打开后显示是程序最上端,在关闭它之前,会暂禁止用户对此程序内此窗体以外的其他对象的操作。按照微软的帮助信息里所述,创建一个对话框窗体需要对窗体作以下设置:
- 在“弹出方式”属性框中,单击“是”。
- 在“模式”属性框中,单击“是”选项。
- 在“边框样式”属性框中,单击“对话框边框”。
- 在“记录选择器”属性框中,单击“否”。
- 在“导航按钮”属性框中,单击“否”。
- 在“分隔线”属性框中,单击“否”。
注:关键是前3条,后3条只是对“对话框”窗体的美化。
OK,对话框的概念先点到为止。下面先讲讲[边框样式]
一 [边框样式]
属性中[边框样式](BorderStyle)有以下选择:无/细边框/可调边框/对话框边框,其他几个与本主题无关,就说说这个“无边框边框”,如果设置了“无边框边框”则本窗体有个粗边框,并且只能包含一个标题栏、“关闭”按钮和“控制”菜单。窗体不能最大化、最小化或调整大小(“控制”菜单上的“最大化”、“最小化”和“大小”命令也不可用)。但这些,仅仅是实现一个对话框窗体的一部分,它只是设置了一个框架,要实现真正的对话框窗体还需要很多其他的设置。
二 [弹出方式]
属性中的这个弹出方式(PopUp)有两个选择:是/否(True/False),把窗体的弹出方式设置为:是,将实现打开它后,它停留在其他所有窗口的上面。如果有两个弹出方式为“是”的窗体同时打开,则它俩会根据焦点的获得需相互覆盖。注:此属性在窗体运行状态与不可更改(可读不可写)。
三 [模式]
属性中的这个模式(Modal)同样有两个选择:是/否(True/False),当窗体(或报表)的模式设为“是”后,打开它后,在焦点移到另一个对象之前,必须先关闭该窗口。注:此属性在窗体运行状态下可读写。
设置好上面3个属性,再加上所开头所述的美化,一个对话框窗体基本就设置好了。但是,注意了,我说了但是,对于上面设置出来的窗体,也只能称之为伪对话框(可能是我一面之辞),为什么这么说呢,因为即然是对话框,理论上说,就应该禁止用户对程序内本窗体外其他所有对象的操作。但实事上,这样设置好的窗体并没有做到这一步,到VBA窗体中测试一下,更改代码就知道了,一切还是畅通无阻。是的,问题就出在这里,不要以为我是在吹毛求疵,可能有时候你的疑惑正出在这里,
举个例子来讲,一个“窗体A”如上所设。我们来写一个代码
DoCmd.OpenForm "窗体A"
DoCmd.Close acForm, "窗体B"
运行这两句代码,你不要指望在运行第一句后,直到“窗体A”关闭后,才运行第二句。事实上它会一气哈成的运行完。这就是我之所以称之为伪对话框的原因。
那么,如果程序需要,一定要运行第一句后,直到“窗体A”关闭后才运行第二句该怎么做呢?
还好,微软在打开窗体时提供了一个参数"WindowMode",可选项有:
AcWindowMode 可以是下列 AcWindowMode 常量之一: |
acDialog 窗体的 Modal 和 PopUp 属性设为“是”。 |
acHidden 窗体隐藏。 |
acIcon 打开窗体并在 Windows 工具栏中最小化。 |
acWindowNormal 默认值 窗体采用它的属性所设置的模式 |
现在我们只关心那个acDialog,上面的描述来自帮助信息,里面说了,acDialog 参数等于窗体的 Modal 和 PopUp 属性设为“是”。事实上它并非这么简单,它——真正实现了一个对话框窗体。在打开窗体的命令行上带上它,就可以实现我们上面的要求了。
代码更改如下:
DoCmd.OpenForm "窗体A",,,,,acDialog
DoCmd.Close acForm, "窗体B"
测试下吧,看看效果如何,哈哈......讲到这里,此篇文章也该结束了,希望对你有所帮助。
有什么不同看法,欢迎斧正。
Access软件网官方交流QQ群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- Access快速开发平台企业版--...(11.18)
- 不会用多表联合查询,多表查询没结果...(11.16)
- 【案例分享】主键字段值含有不间断空...(11.16)
- Access快速开发平台--后台D...(11.14)
- 微软Access邀测新Monaco...(11.12)
- Access列表框左右互选、列表框...(11.11)
- 高效率在导入数据前删除记录(11.10)
- Access报价单转订单示例代码(11.08)
- Access系统自带的日期选择器不...(11.08)
- 分享一下Access工程中的acw...(11.07)