设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[窗体] 如何打开一个窗体,所有的单元格都非活动状态

[复制链接]
11#
发表于 2009-2-24 08:54:47 | 只看该作者
是不是这样:
假设窗体名是:frm1,里面有6个字段:TEXT1,TEXT2,TEXT3,TEXT4,TEXT5,TEXT6。你要锁定的是1,2,3;允许编辑的是4,5,6。
Private Sub Form_Current()
    ME.TEXT1.LOCKED = TRUE
    ME.TEXT2.LOCKED = TRUE
    ME.TEXT3.LOCKED = TRUE
    ME.TEXT4.LOCKED = FALSE
    ME.TEXT5.LOCKED = FALSE
    ME.TEXT6.LOCKED = FALSE
End Sub

至于你说的批量设置字段的LOCKED嘛……我就不清楚。
12#
发表于 2009-2-24 08:59:48 | 只看该作者
把窗体设为非编辑的,不是就是批量设置控件了吗
13#
发表于 2009-2-24 20:42:48 | 只看该作者
把窗体设为非编辑的,不是就是批量设置控件了吗
Henry D. Sy 发表于 2009-2-24 08:59

板主,我本来也是这样想的.但是,楼主的要求是其中3个控件允许被编辑,其它的不允许...
其实我也在想,有没有其它更好的方法...
14#
发表于 2009-2-24 22:58:56 | 只看该作者
看我正用的模块是不合适你的要求

''锁定/解除 窗体上主体节上所有已绑定的控件的可编辑性
''参数      Frm: 窗体名
''参数 MyLocked:  True锁定 / False解除
'' 使用示例:
''执行锁定: TextLocked(Me, True)
''执行解除: TextLocked(Me, False)
Public Sub TextLocked(Frm As Form, MyLocked As Boolean)
    On Error Resume Next
    Dim obj As String
   
    For Each ctl In Frm.Section(acDetail).Controls      '遍历主体上控件
        obj = ctl.ControlSource
        If IsNull(obj) Or Trim(obj) = "" Or ctl.Enabled = False Then GoTo OUT '为 未绑定数据源控件 或 不可用控件 时跳出循环下一个
        
      
        If MyLocked Then
            ctl.Locked = True
            If ctl.ControlType = acTextBox Or ctl.ControlType = acComboBox Or ctl.ControlType = acListBox Then
                If ctl.ForeColor <> 16737843 Then ctl.ForeColor = 16737843     '对文本框、组合框、列表框字体颜色更改
            End If
        Else
            ctl.Locked = False
            If ctl.ControlType = acTextBox Or ctl.ControlType = acComboBox Or ctl.ControlType = acListBox Then
                If ctl.ForeColor <> 4194432 Then ctl.ForeColor = 4194432        '对文本框、组合框、列表框字体颜色更改
            End If
        End If
  
OUT:
   
    Next
End Sub
15#
 楼主| 发表于 2009-2-25 20:23:13 | 只看该作者
谢谢楼上 我试试看!
16#
 楼主| 发表于 2009-2-25 22:29:14 | 只看该作者
好像不行饿。。
17#
 楼主| 发表于 2009-2-26 21:01:07 | 只看该作者
等帮助。。。。
18#
 楼主| 发表于 2009-2-27 20:34:42 | 只看该作者
大家再看看我这个呢。

Public Function TextLocked()
On Error Resume Next


    Dim Frm As Form
    Dim Ctl As Control
   
    DoCmd.OpenForm "Vorschlag Teilesteuerung_1", acNormal, "", "", acFormAdd, acNormal
   
    Set Frm = Current_Form
   
    For Each Ctl In Me.Controls
        If Ctl.ControlType = acTextBox Or _
           Ctl.ControlType = acComboBox Or _
           Ctl.ControlType = acListBox Then
            Ctl.Locked = True
        End If
    Next Ctl


End Function


我运行了一下,报错说,非法使用Me
19#
发表于 2009-2-27 20:39:15 | 只看该作者
For Each Ctl In Frm.Controls
20#
 楼主| 发表于 2009-2-27 21:43:54 | 只看该作者
还是不行。。。根本没有locked。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 01:48 , Processed in 0.096896 second(s), 31 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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