记录窗口与表事件
不管是在表中编辑数据,还是在记录窗口编辑数据,都会触发以下和编辑相关的表事件:
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
可以看出,记录窗口有自己独立的一套处理下拉列表和下拉窗口的方法,必须在相关事件中进行判断,以便采用合适的属性和方法。