以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]关于快捷菜单显示问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=57363)

--  作者:jspta
--  发布时间:2014/9/23 15:38:00
--  [求助]关于快捷菜单显示问题
在cell-RowMean的Popup事件中加入以下,本意是有_SortKey或者_Locked列存在即显示菜单,但是实际过程中,无论有没有_Locked列都会显示,并且同步行灰色。在原始的系统菜单上修改的,是不是哪里还有代码控制了?以下代码可以如何修改?
表都是窗口表,肯定有很多是不包括_Locked列的

With e.CommandMenu
    Dim ssdt As System.Data.DataTable = CurrentTable.DataTable.BaseTable
    Dim bln As Boolean
    bln = ssdt.Columns.Contains("_SortKey")
    .Items("MoveUp").Visible = bln
    .Items("MoveDown").Visible = bln
    bln = ssdt.Columns.contains("_Locked")
    .Items("Lock").Visible =  bln
    .Items("UnLock").Visible = bln
    .Items("Load").Visible = bln
    bln = False
    .Items("Add").Visible = bln
    .Items("Insert").Visible = bln
    .Items("Delete").Visible = bln
    .Items("Clone").Visible = bln
    \'.Items("Load").Visible = bln

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


[此贴子已经被作者于2014-9-23 16:18:54编辑过]

--  作者:Bin
--  发布时间:2014/9/23 15:49:00
--  
请上例子
--  作者:有点甜
--  发布时间:2014/9/23 15:49:00
--  

 测试了一下,控制有效。

 

 单元格的,写在cell;最左边序号列的,写在row


--  作者:jspta
--  发布时间:2014/9/23 16:20:00
--  
上传测试文件,表C删除了两个标志列,但还是在cell中显示
--  作者:有点甜
--  发布时间:2014/9/23 16:23:00
--  
 代码没有问题啊,控制正常
--  作者:jspta
--  发布时间:2014/9/23 16:31:00
--  
以下是引用有点甜在2014-9-23 16:23:00的发言:
 代码没有问题啊,控制正常
。。。这不可能啊。难道是版本问题?我是2014.09.01的版本
你表C中的cell-row中显示的是没有功能吗?


--  作者:有点甜
--  发布时间:2014/9/23 16:48:00
--  
 再测试了一下,无法从当前表 currentTable 获取得到,此表是否包含 _Locked 列,必须结合sql语句,查找列才知道是否存在。
--  作者:jspta
--  发布时间:2014/9/23 17:03:00
--  
以下是引用有点甜在2014-9-23 16:48:00的发言:
 再测试了一下,无法从当前表 currentTable 获取得到,此表是否包含 _Locked 列,必须结合sql语句,查找列才知道是否存在。
这个找不到有点莫名其妙,如此简单的问题不想用SQL去查询。用CurrentTable.Grid也是判断不了,需要官方给个确实的答案,或者解决方案。这完全是个小问题额

[此贴子已经被作者于2014-9-23 17:03:59编辑过]

--  作者:有点甜
--  发布时间:2014/9/23 17:33:00
--  

 目前来说,想不到好的方法了,只能这样搞一下

 

Dim Builder As New ADOXBuilder
Dim flag As Boolean = True
try
    Builder.Open() \'打开ADOXBuilder
    With Builder.Tables(CurrentTable.Name)
        .RenameColumn("_Locked","_Temp")
        .RenameColumn("_Temp","_Locked")
    End With
catch ex As exception
    flag = False
End try
Builder.Close() \'关闭ADOXBuilder

msgbox("是否存在 : " & flag)


--  作者:jspta
--  发布时间:2014/9/23 17:58:00
--  
甜版给反馈下呗。
还好最初在命名的时候留下规则,暂时可以应付下这个问题。不过还是希望能从根源解决