以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  全局表事件无效  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=20461)

--  作者:lihe60
--  发布时间:2012/6/9 13:54:00
--  全局表事件无效

全局表事件DataRowAdded加入代码messagebox.show(1)

增加一行时,没有任何反应。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb

[此贴子已经被作者于2012-6-9 13:54:57编辑过]

--  作者:blackzhu
--  发布时间:2012/6/9 14:07:00
--  
为了提高系统效率,在默认情况下,只有CurrentChanged、PositionChanged、AfterSelChange、AfterSelRangeChange四个全局表事件对所有表有效, 而其它全局表事件即使设置了代码,也不会发生作用。
当然这并不意味着其它全局表事件永久无效,只是这些表事件需要一个“开关”去开启。
DataTable有一个GlobalHandler属性,该属性包括以下子属性,对应着每一个全局表事件

AfterCheckRow
AfterDragColumn
AfterEdit
AfterFilter
AfterFreezeColumn
AfterLoad
AfterLockDataRow
AfterMoveRow
AfterResizeColumn
AfterResizeRow
AfterSelChange
AfterSelRangeChange
AfterSort
AfterUnlockDataRow
Click
BeforeAddDataRow
BeforeAttachFile
BeforeCheckRow
BeforeDeleteDataRow
BeforeDragColumn
BeforeDrawRow
BeforeFilter
BeforeFreezeColumn
BeforeLoad
BeforeLockDataRow
BeforeResizeColumn
BeforeResizeRow
BeforeSaveDataRow
BeforeSelChange
BeforeSelRangeChange
BeforeShowContextMenu
BeforeSort
BeforeUnlockDataRow
CellButtonClick
ChangeEdit
CurrentChanged
DataColChanged
DataColChanging
DataRowAdded
DataRowAdding
DataRowDeleted
DataRowDeleting
DoubleClick
DrawCell
KeyDown
KeyDownEdit
KeyPressEdit
KeyUp
KeyUpEdit
PositionChanged
PrepareEdit
SetupEditor
StartEdit
ValidateEdit

这些属性都是逻辑型,如果要使某个全局表事件对该DataTable有效,只需将对应的属性设为True即可。
这些属性中,
只有CurrentChanged、PositionChanged、AfterSelChange、AfterSelRangeChange的默认值为True,这也就是为什么默认只有这四个全局表事件有效的原因。

例如要使全局表事件AfterEdit事件对表A有效,只需:

DataTables("表A").GlobalHandler.AfterEdit = True

要使全局表事件AfterEdit事件对所有表有效,只需:

For Each dt As DataTable In DataTables
    dt.GlobalHandler.AfterEdit
= True
Next


--  作者:lihe60
--  发布时间:2012/6/9 14:17:00
--  
原来是没有开启。