设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2159|回复: 9
打印 上一主题 下一主题

[窗体] 请问关于窗体成为当前和打开事件的问题?

[复制链接]
跳转到指定楼层
1#
发表于 2003-12-11 21:51:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问我在窗体成为当前和打开时加入以下事件,当窗体打开时窗体上的所有控件为不可编辑状态,只有单击编辑后才可以修改控件值,
其中"按编辑"是一个组合框如果在不激活编辑的状态时也可以让他变为可选应该如何写.
我在事件中把"按编号.Enabled = True"也不行请教应该如何写



Private Sub Form_Current()

    Me.AllowEdits = False
    编辑.Enabled = True
    按编号.Enabled = True
    添加正面图.Enabled = False
    删除正面图.Enabled = False
    添加反面图.Enabled = False
    删除反面图.Enabled = False
    保存.Enabled = False
    不存.Enabled = False
    删除.Enabled = False
End Sub

Private Sub Form_Open(Cancel As Integer)
    DoCmd.Restore
    Me.AllowEdits = False
    编辑.Enabled = True
    按编号.Enabled = True
    添加正面图.Enabled = False
    删除正面图.Enabled = False
    添加反面图.Enabled = False
    删除反面图.Enabled = False
    保存.Enabled = False
    不存.Enabled = False
    删除.Enabled = False
End Sub

[此贴子已经被作者于2003-12-12 10:31:07编辑过]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2003-12-12 01:27:00 | 只看该作者
原因是这一句Me.AllowEdits = False在作怪。它使你整个窗体的任何控件都不能被编辑。如果你希望某个控件被编辑,只能Me.AllowEdits = True,然后用一个众所周知的循环将所有控件disable,最后将少数需要编辑的控件enable
3#
 楼主| 发表于 2003-12-12 18:32:00 | 只看该作者
我把裤传上来!阿罗大哥能帮我看一下吗?
4#
发表于 2003-12-12 19:04:00 | 只看该作者
你先看一下,算是一个折中的方案

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
5#
发表于 2003-12-12 19:21:00 | 只看该作者
二楼说得对,AllowEdits是窗体可否编辑的死命令,Me.AllowEdits = False只可以窗体进浏览,不可编辑,任何语句也不能单独打开某个文件框或列表框进行编辑。
6#
发表于 2003-12-12 19:21:00 | 只看该作者
仅仅添加了这两段:

Private Sub 按编号_Enter()
Me.AllowEdits = True
End Sub

Private Sub 按编号_Exit(Cancel As Integer)
Me.AllowEdits = False
End Sub

我想这个方法能暂时解决一下问题。鉴于整个程序的结构,要做大的修改时间不允许了。但是还是想提供一个比较通用的思路:

例如,你可以在设计时将每个要打开/关闭编辑的控件设置一个相同的"标记"属性值(标记属性在属性的“其他”页的最后一条),假定属性值定为 "AE",接下来,需要些两段子程序

private sub editDisable()
dim ctl as control
for each ctl in Me
     if ctl.tag = "AE" then
          if ctl.controlType = acTextBox or ctl.controlType = acCheckBox then ctl.locked=true
          '////if ctl.controlType = 其他类型及相关的锁定属性 (例如按钮)
    end if
next ctl
end sub
第二个子程序要做的正好相反
这样,你就可以在相应的form和按钮事件中按需调用即可。

你也可以将这两段子程序中的me改成引用当前激活窗体,从而将这两个子过程放到通用模块中。
7#
发表于 2003-12-12 19:28:00 | 只看该作者
还有一点需要注意,对窗体上的控件进行enable/disable操作前,先将焦点移开。
8#
 楼主| 发表于 2003-12-12 19:38:00 | 只看该作者
谢谢!阿罗大哥,小弟初学有些地方做的比较粗不过在这里能和诸位高手讨教非常高兴!问题我已经按照阿罗的方法暂时解决.我也会按照阿罗提供的思路做修改优化.再次谢谢阿罗!
9#
 楼主| 发表于 2003-12-12 20:55:00 | 只看该作者
在我测试的时候,每次单击新增一条记录在光标跳转倒客户代码列表的时候,image(产品正面图及产品反面图处)就会同时显示上一条记录的图片及添加图片的提示标签,不知为何.
我在客户代码列表加入以下事件:
Private Sub 客户名称_GotFocus()
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
    Me!客户名称.Dropdown
End Sub
目的是在"新增客户"完成后再次获得焦点时可以刷新当前窗体以便"客户代码列表"获得新增的客户代码,但是就会出现上述的问题.请教如何解决!

[此贴子已经被作者于2003-12-12 13:33:10编辑过]

10#
 楼主| 发表于 2003-12-14 01:52:00 | 只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-15 03:50 , Processed in 0.102170 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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