Foxtable(狐表)用户栏目专家坐堂 → [求助]能否将表事件的代码改写到全局表事件


  共有8383人关注过本帖树形打印复制链接

主题:[求助]能否将表事件的代码改写到全局表事件

帅哥哟,离线,有人找我吗?
yyzlxc
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
[求助]能否将表事件的代码改写到全局表事件  发帖心情 Post By:2013/2/17 10:30:00 [只看该作者]

各位老师,新年好!
以下两段代码需要写入每张表的表事件中,如果将此代码写入全局表事件中,并达到同样效果,应该如何修改,请各位老师指教,谢谢!!

 

1、表事件BeforeShowContextMenu

'隐藏快捷键
If _UserGroup = "开发" Then
    e.Cancel = False
Else
    e.Cancel = True
End If


2、表事件CurrentChanged

'整行突出

DataTables("表名").SysStyles("Frozen").BackColor = Color.LightCyan
DataTables("表名").SysStyles("CurrentRow").BackColor = Color.Blue
DataTables("表名").SysStyles("CurrentRow").ForeColor = Color.White


 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/2/17 10:44:00 [只看该作者]

 首先,你需要开启对应的全局表事件。

 后这样写。

 If _UserGroup = "开发" Then
    e.Cancel = False
 Else
    e.Cancel = True
 End If

----------------------------------

 
e.DataTable.SysStyles("Frozen").BackColor = Color.LightCyan
 e.DataTable.SysStyles("CurrentRow").BackColor = Color.Blue
 e.DataTable.SysStyles("CurrentRow").ForeColor = Color.White
 
(这里只需要设置一次就行了,建议写在afteropenproject事件里,代码要变一下)

for each dt as datatable in datatables

    dt.SysStyles("Frozen").BackColor = Color.LightCyan
    dt.SysStyles("CurrentRow").BackColor = Color.Blue
    dt.SysStyles("CurrentRow").ForeColor = Color.White
next

--------------------------------------------------

开启全局表
http://www.foxtable.com/help/topics/0671.htm


 回到顶部
帅哥哟,离线,有人找我吗?
lsy
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2013/2/17 11:51:00 [只看该作者]

如果不需要判断表名,代码写在全局表事件中省事,如果需要用select case 判断表名,又要判断行、列,那在全局表事件中,代码将多到不忍目睹,很难管理,还不如写到每张表中。


 回到顶部
帅哥哟,离线,有人找我吗?
yyzlxc
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2013/2/17 13:35:00 [只看该作者]

谢谢林老师的指教!

第一段代码放在全局表事件的BeforeShowContextMenu事件中,在项目事件的Initialize事件中写入开启全局表的代码:

 

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

 

好像对用CrossTableBuilder生成的汇总表不起作用,其他表可行。

 

第二段代码好像不能放在全局表事件的CurrentChanged事件中,否则会出现错误提示。

 

 


此主题相关图片如下:a.png
按此在新窗口浏览图片

只能用以下代码写在afteropenproject事件里,同样对用CrossTableBuilder生成的汇总表不起作用。

 

for each dt as datatable in datatables
    dt.SysStyles("Frozen").BackColor = Color.LightCyan
    dt.SysStyles("CurrentRow").BackColor = Color.Blue
    dt.SysStyles("CurrentRow").ForeColor = Color.White
next

以上问题是否有办法解决,还请林老师指教,谢谢!!


 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/2/17 14:15:00 [只看该作者]

 改一下就可以了。全局表事件里。

 DataTables(e.Table.name).SysStyles("Frozen").BackColor = Color.LightCyan
 DataTables(e.Table.name).SysStyles("CurrentRow").BackColor = Color.Blue
 DataTables(e.Table.name).SysStyles("CurrentRow").ForeColor = Color.White

 回到顶部