以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]能否将表事件的代码改写到全局表事件  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=28746)

--  作者:yyzlxc
--  发布时间: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
--  发布时间: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
--  发布时间:2013/2/17 11:51:00
--  

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


--  作者:yyzlxc
--  发布时间: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
--  发布时间: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