Office中国论坛/Access中国论坛

标题: 如何将只读模式窗体就地转为编辑模式? [打印本页]

作者: steven_shuhong    时间: 2004-12-19 07:08
标题: 如何将只读模式窗体就地转为编辑模式?
我想在窗体中加一个按钮,在窗体以只读模式打开的状态下就地将窗体改为编辑模式(对应窗体现有内容)。我该如何做?最好用宏解决。
作者: ccczzz    时间: 2004-12-19 18:49
[attach]8193[/attach]

是否符合要求
作者: cg1    时间: 2004-12-19 21:44
更改窗体的属性即可全部显示AllowEdits 属性

参阅应用于示例特性使用 AllowEdits 属性可以指定用户是否可在使用窗体时编辑已保存的记录。Boolean 型,可读写。expression.AllowEdits

expression      必需。返回“应用于”列表中的一个对象的表达式。设置

AllowEdits 属性使用以下设置:设置 Visual Basic 说明

是 True    (默认值)用户可以编辑已保存记录。

否 False 用户不能编辑已保存记录。

可以使用窗体属性表、宏或 Visual Basic 来设置 AllowEdits 属性。说明

如果要防止更改窗体中显示的现有数据,可以使用 AllowEdits 属性。如果要防止更改特定控件中的数据,可以使用 Enabled 或 Locked 属性。如果要防止更改已有记录(使窗体只读),可以将 AllowAdditions、AllowDeletions 和 AllowEdits 属性设为“否”。也可以将 RecordsetType 属性设置为“快照”,使记录成为只读。将 AllowEdits 属性设置为“否”时,“删除记录”或“数据输入”菜单命令对现有记录将不可用。(如果将 AllowAdditions 属性设为“是”,则其对新记录将仍然可用。)无论 AllowEdits 属性的设置如何,通过编程对字段值进行的更改都会使当前记录可被编辑。如果要防止用户对需要通过编程才能编辑的记录(AllowEdits 为“否”)进行更改,请在所有程序化更改后保存记录;保存完针对当前记录未保存的所有更改后,AllowEdits 属性设置将再次发挥作用。

注释  如果设置了 OpenForm 操作的“数据模式”参数,Microsoft Access 将忽略许多窗体属性设置。如果 OpenForm 操作的“数据模式”参数设置为“编辑”,Microsoft Access 所打开的窗体将具有下列属性设置:

AllowEdits:是

AllowDeletions:是

AllowAdditions:是

DataEntry:否

要防止 OpenForm 操作覆盖任何现有的属性设置,可以省略“数据模式”参数,使 Microsoft Access 使用窗体定义的属性设置。示例

下面的示例检查窗体上所有控件的 ControlType 属性,并切换每个标签控件和文本框控件的 SpecialEffect 属性。当标签控件的 SpecialEffect 属性设置为“阴影”,文本框控件的 SpecialEffect 属性设置为“普通”,AllowAdditions、AllowDeletions 和 AllowEdits 属性设置为 True 时,intCanEdit 变量将切换到允许编辑基础数据的状态。Sub ToggleControl(frm As Form)

    Dim ctl As Control

    Dim intI As Integer, intCanEdit As Integer

    Const conTransparent = 0

    Const conWhite = 16777215

    For Each ctl in frm.Controls

        With ctl

            Select Case .ControlType

                Case acLabel

                    If .SpecialEffect = acEffectShadow Then

                        .SpecialEffect = acEffectNormal

                        .BorderStyle = conTransparent

                        intCanEdit = True

                    Else

                        .SpecialEffect = acEffectShadow

                        intCanEdit = False

                    End If

                Case acTextBox

                    If .SpecialEffect = acEffectNormal Then

                        .SpecialEffect = acEffectSunken

                        .BackColor = conWhite

                    Else

                        .SpecialEffect = acEffectNormal

                        .BackColor = frm.Detail.BackColor

                    End If

            End Select

        End With

    Next ctl

    If intCanEdit = IFalse Then

        With frm

            .AllowAdditions = False

            .AllowDeletions = False

            .AllowEdits = False

        End With

    Else

        With frm

            .AllowAdditions = True

            .AllowDeletions = True

            .AllowEdits = True

        End With

    End If

End Sub

  


作者: steven_shuhong    时间: 2004-12-20 07:12
可以了,谢谢楼上两位!!




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