记录窗口与表事件

不管是在表中编辑数据,还是在记录窗口编辑数据,都会触发以下和编辑相关的表事件:

PrepareEdit 准备编辑单元格的时候执行。
StartEdit 开始编辑单元格的时候执行。
ValidateEdit 结束编辑单元格前执行,通常用于验证输入的内容
AfterEdit 结束编辑单元格后执行,通常用于执行一些特定的操作和计算
CellButtonClick 单击窗口按钮后执行,通常用于实现一些复杂的输入功能
ChangeEdit 编辑框中内容发生变化时执行
KeyPressEdit 在编辑框每输入一个字符时执行
KeyDownEdit 在编辑框中按下某一按键时执行
KeyUpEdit 在编辑框中松开某一按键时执行。

那么在这些事件中,如何判断是在表中输入数据,还是在记录窗口输入数据呢?

所有这些事件的e参数都有一个属性:

RecordGrid:如果是在记录窗口编辑数据,则返回此记录窗口,如果是在表中输入数据,则返回Nothing。

示例一

假定有个表,只允许在记录窗口输入数据,那么可以将PrepareEdit事件代码设置为:

If e.RecordGrid Is Nothing Then '如果不是在记录窗口输入数据
   e.Cancel = True
'则取消输入

End
If

示例二

假定不管是在录入窗口输入数据,还是在表中输入数据,只要正在编辑的是“第一列”,就自动打开下拉窗口:

If e.Col.Name = "第一列" Then
    If e.RecordGrid Is Nothing Then
'
如果是在表中输入数据
        If e.Col.DroppedDown = False Then
            e.Col.OpenDropDown()
        End If
    Else
'
如果是在记录窗口输入数据
        If e.RecordGrid .DroppedDown = False Then
            e.RecordGrid.OpenDropDown()
        End If
   
End If
End
If

可以看出,记录窗口有自己独立的一套处理下拉列表和下拉窗口的方法,必须在相关事件中进行判断,以便采用合适的属性和方法。


本页地址:http://www.foxtable.com/webhelp/topics/2635.htm