Access VBA教程:Dirty事件

   

当窗体的内容或组合框的文本部分的内容更改时,Dirty事件发生。在选项卡控件中从一页移到另一页时,该事件也会发生。

Private Sub Form_Dirty(Cancel As Integer)

Dirty事件过程具有以下参数:

参数 说明
Cancel 该设置决定是否发生 Dirty事件。将 Cancel参数设为 True 就取消 Dirty事件。也可以使用 DoCmd对象的 CancelEvent方法来取消该事件。
 

说明

该事件的示例包括直接在文本框或组合框中输入一个字符,或者使用宏或 Visual Basic 更改该控件的Text属性设置。

若要在该事件发生时运行宏或事件过程,可将OnDirty属性设为宏的名称或 [事件过程]。

通过在 Dirty事件发生时运行宏或事件过程,可以确定记录是否能被更改。也可以显示一条消息请求获得编辑权限。

使用键盘更改记录中的数据,除了会发生类似 Dirty事件的控件事件外,还会引发键盘事件。例如,如果移到新记录并在记录的文本框中输入一个ANSI 字符,就会依次发生以下事件:

KeyDown > KeyPress > BeforeInsert > Dirty > KeyUp

在记录中输入完新的或更改的数据、并移到其他记录(或单击了“记录”菜单中的“保存记录”)之后,才发生记录的BeforeUpdateAfterUpdate事件,因此它们是发生在记录的 Dirty事件之后的。

取消 Dirty事件将会导致回滚对当前记录的更改。相当于按 Esc 键。

示例

下面的示例将在更改数据时启用 btnUndo 按钮。从文本框控件的 Dirty事件中调用 UndoEdits( ) 子例程。通过使用 OldValue属性,单击启用的 btnUndo 按钮恢复控件的原始值。


Private Sub Form_Dirty()
    If Me.Dirty Then
        Me!btnUndo.Enabled = True     ' Enable button.
    Else
        Me!btnUndo.Enabled = False    ' Disable button.
    End If
End Sub
Sub btnUndo_Click()
    Dim ctlC As Control
        ' For each control.
        For Each ctlC in Me.Controls
            If ctlC.ControlType = acTextBox Then
                ' Restore Old Value.
                ctlC.Value = ctlC.OldValue
            End If
        Next ctlC
End Sub

上页:Access VBA教程:Delete事件 下页:Access VBA教程:Enter事件

Access VBA教程:Dirty事件

Access VBA教程:Enter事件 Access VBA教程:Error事件
Access VBA教程:Exit事件 Access VBA教程:Filter事件
Access VBA教程:FirstPage、LastPage、NextPage、PrevPage事件(快照查看器) Access VBA教程:Format事件
Access VBA教程:GotFocus事件 Access VBA教程:Initialize事件
Access VBA教程:ItemAdded事件 Access VBA教程:ItemRemoved事件
Access VBA教程:KeyDown事件 Access VBA教程:KeyPress事件
Access VBA教程:KeyUp事件 Access VBA教程:Load事件
Access VBA教程:LostFocus事件 Access VBA教程:MouseDown事件
Access VBA教程:作为位掩码的固有常量 Access VBA教程:MouseMove事件
Access VBA教程:MouseUp事件 Access VBA教程:MouseWheel事件
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号