以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于自定义菜单引用部分系统菜单的错误  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=53061)

--  作者:天若千颖
--  发布时间:2014/6/28 15:18:00
--  关于自定义菜单引用部分系统菜单的错误

   我是这么一个想法,比如说,用户分为三类,一类是普通用户,只有自定义菜单,一类是高级用户,可以使用部分系统菜单,比如系统菜单中的“日常操作”,另外就是开发者本人,在使用自定义菜单的同时,可以随时切换到系统菜单。

 

    日常操作这部分菜单,我放在自定义菜单中的“高级管理”中,高级管理菜单默认是隐藏,如图,在数据管理菜单中有一个“高级模式”的按钮,如果登陆用户分组为高级用户,则显示高级管理菜单,否则,提示无权限。

 

  
图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

 

   因为自定义菜单做了很多了,所以我是通过在自定义菜单上一个一个增加系统菜单。我是这么做的,我用一个新项目,用系统自带的菜单模板生成所有的菜单,然后把系统所有的菜单的名称,图片,包括事件的代码一个一个复制到我的项目的菜单设计中,层次一样。就做成了自定义的菜单中引用部分系统菜单。真是个累人的活,一个上午就弄了这个。

 

  

  

 
图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看

 

   


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20140628151453.png
图片点击可在新窗口打开查看

 

    问题出来了,首先,关闭项目后,点击项目文件无法正常打开,提示重新安装,如图:

 

  

 

   


--  作者:天若千颖
--  发布时间:2014/6/28 15:19:00
--  


图片点击可在新窗口打开查看此主题相关图片如下:3.jpg
图片点击可在新窗口打开查看

 

只能通过先打开狐表软件,然后在选择项目文件,再打开,打开后提示:


 


图片点击可在新窗口打开查看此主题相关图片如下:4.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:5.jpg
图片点击可在新窗口打开查看

--  作者:天若千颖
--  发布时间:2014/6/28 15:22:00
--  

  帮助上说过,如果用系统菜单生成自定义菜单的话,要隐藏部分不需要的,然后要在如图位置修改代码

 


图片点击可在新窗口打开查看此主题相关图片如下:6.jpg
图片点击可在新窗口打开查看

 

 我是自定义菜单中增加系统菜单,该地方为空白,是否需要根据系统菜单的方式增加部分代码呢,这是不是出现问题的原因所在?


--  作者:Bin
--  发布时间:2014/6/28 15:27:00
--  
导入系统菜单,在此基础上添加自定义菜单.   再根据用户设置显示隐藏对应的菜单
--  作者:天若千颖
--  发布时间:2014/6/28 15:30:00
--  
版主好,可是我自定义菜单很多了,没法重做,我正好相反,在自定义菜单中增加系统菜单。这个方法一定不行吗?
--  作者:Bin
--  发布时间:2014/6/28 15:33:00
--  
行,但是非常麻烦. 因为涉及的东西多. 你可能搞不定.   还是反过来做比较好.
--  作者:天若千颖
--  发布时间:2014/6/28 15:34:00
--  

也就是说,光是修改这部分菜单还不行?

 

If CurrentTable Is Nothing Then
    Return
End If

\'此段代码用于更新日常工作区"整行"按钮的状态,,如果按钮已经改名或者移到别的功能区,请对应地修改此段代码
\'如果删除了此按钮,应该删除此段代码
Static lm As RibbonMenu.ToggleButton
If lm Is Nothing Then
    lm = RibbonTabs("Common").Groups("Edit").Items("ListMode")
End If
If lm.Pressed <> CurrentTable.ListMode Then
    lm.Pressed = CurrentTable.ListMode
End If

\'此段代码用于更新日常工作区"切换"按钮的状态,如果按钮已经改名或者移到别的功能区,请对应地修改此段代码
\'如果删除了此按钮,应该删除此段代码
Static tb As RibbonMenu.ToggleButton
If tb Is Nothing Then
    tb = CType(RibbonTabs("Common").Groups("SortAndFilter").Items("Toggle"), RibbonMenu.ToggleButton)
End If
If (CurrentTable.Filter > "" AndAlso CurrentTable.ApplyFilter = True) OrElse (CurrentTable.Sort > "" AndAlso CurrentTable.ApplySort = True) OrElse (CurrentTable.IsRelation = False AndAlso CurrentTable.DataTable.InBackEndFilterMode = True) Then
    If tb.Pressed = False Then
        tb.Pressed = True
    End If
Else
    If tb.Pressed = True Then
        tb.Pressed = False
    End If
End If

\'此段代码用于更新配置栏"后台筛选"按钮的状态,如果按钮已经改名或者移到别的功能区,请对应地修改此段代码
\'如果删除了此按钮,应该删除此段代码
Static bf As RibbonMenu.ToggleButton
If bf Is Nothing Then
    bf = CType(ConfigBar.Items("BackEndFilter"), RibbonMenu.ToggleButton)
End If
If CurrentTable.AllowBackEndFilter Then
    If bf.Pressed = False Then
        bf.Pressed = True
    End If
Else
    If bf.Pressed
        bf.Pressed = False
    End If
End If

\'此段代码用于决定日常工作功能区的"筛选"按钮是否可用,如果按钮已经改名或者移到别的功能区,请对应地修改此段代码
\'如果删除了此按钮,应该删除此段代码
Static fm As RibbonMenu.MenuButton
If fm Is Nothing Then
    fm = CType(RibbonTabs("Common").Groups("SortAndFilter").Items("Filter"), RibbonMenu.MenuButton)
End If
If CurrentTable.Position < 0 OrElse CurrentTable.ColSel < 0 Then
    If fm.Enabled Then
        fm.Enabled = False
    End If
Else
    If Not fm.Enabled Then
        fm.Enabled = True
    End If
End If

\'以下代码用于更新管理项目功能区"暂停计划"按钮的状态,如果按钮已经改名或者移到别的功能区,请对应地修改此段代码
\'如果删除此按钮,也应该删除此段代码
Static tp As RibbonMenu.ToggleButton
If tp Is Nothing Then
    tp = CType(RibbonTabs("Project").Groups("Timers").Items("Pause"), RibbonMenu.ToggleButton)
End If
If Mytimers.Pause Then
    If tp.Pressed = False Then tp.Pressed = True
Else
    If tp.Pressed  Then tp.Pressed = False
End If

\'以下代码用于更新配置栏"查阅模式"按钮的状态,如果按钮已经改名或者移到别的功能区,请对应地修改此段代码
\'如果删除此按钮,也应该删除此段代码
Static bm As RibbonMenu.ToggleButton
If bm Is Nothing Then
    bm = Ctype(ConfigBar.Items("BrowseMode"),RibbonMenu.ToggleButton)
End If
If DataTables.AllowEdit Then
    If bm.Pressed Then bm.Pressed = False
Else
   If bm.Pressed =False Then bm.Pressed = True
End If


\'以下代码用于更新配置栏"记录窗口"按钮的状态,如果按钮已经改名或者移到别的功能区,请对应地修改此段代码
\'如果删除此按钮,也应该删除此段代码
Static rw As RibbonMenu.ToggleButton
If rw Is Nothing Then
    rw = Ctype(ConfigBar.Items("RecordWindow"),RibbonMenu.ToggleButton)
End If
If CurrentTable.RecordGridVisible Then
    If rw.Pressed =False Then rw.Pressed = True
Else
   If rw.Pressed Then rw.Pressed = False
End If

\'以下代码用于更新快速访问栏中的"撤销"和"重做"按钮的状态,如果按钮已经改名或者移到别的功能区,请对应地修改此段代码
\'如果删除了这两个按钮,也应该删除此段代码
Static Undo As RibbonMenu.Button
Static Redo As RibbonMenu.Button
If Undo Is Nothing Then
    Undo = QAT.Items("Undo")
    Redo = QAT.Items("Redo")
End If
If CurrentTable.CanUndo Then
    If Undo.Enabled = False Then Undo.Enabled = True
Else
    If Undo.Enabled  Then Undo.Enabled = False
End If
If CurrentTable.CanRedo Then
    If Redo.Enabled = False Then Redo.Enabled = True
Else
    If Redo.Enabled Then Redo.Enabled = False
End If

Dim t As Table = CurrentTable

\'以下代码用于在状态栏显示自动计算结果,如果不需要自动计算,可删除这一段
If Vars("SysUpdateAggregate")
    If Windows.Forms.Control.MouseButtons <> Windows.Forms.MouseButtons.None OrElse Windows.Forms.Control.ModifierKeys <> Windows.Forms.Keys.None Then
        Return
    End If
    Dim Str1 As String = ""
    Vars("SysUpdateAggregate") = False
    With RibbonTabs("Other").Groups("Aggregate")
        With CType(.Items("Aggregate"), RibbonMenu.ToggleButton)
            If .Pressed = False Then
                Return
            End If
        End With
        If CType(.Items("Count"), RibbonMenu.CheckBox).Checked Then
            Str1 = Str1 & "计数:" & t.Aggregate(AggregateEnum.Count, t.TopRow, t.LeftCol, t.BottomRow, t.RightCol) & " "
        End If
        If CType(.Items("Sum"), RibbonMenu.CheckBox).Checked Then
            Str1 = Str1 & "累计:" & t.Aggregate(AggregateEnum.Sum, t.TopRow, t.LeftCol, t.BottomRow, t.RightCol) & " "
        End If
        If CType(.Items("Average"), RibbonMenu.CheckBox).Checked Then
            Str1 = Str1 & "平均:" & t.Aggregate(AggregateEnum.Average, t.TopRow, t.LeftCol, t.BottomRow, t.RightCol) & " "
        End If
        If CType(.Items("Max"), RibbonMenu.CheckBox).Checked Then
            Str1 = Str1 & "最大:" & t.Aggregate(AggregateEnum.Max, t.TopRow, t.LeftCol, t.BottomRow, t.RightCol) & " "
        End If
        If CType(.Items("Min"), RibbonMenu.CheckBox).Checked Then
            Str1 = Str1 & "最小:" & t.Aggregate(AggregateEnum.Min, t.TopRow, t.LeftCol, t.BottomRow, t.RightCol) & " "
        End If
        With CType(.Items("Other"), RibbonMenu.MenuButton)
            If CType(.Items("Std"), RibbonMenu.ToggleButton).Pressed Then
                Str1 = Str1 & "标准差:" & t.Aggregate(AggregateEnum.Std, t.TopRow, t.LeftCol, t.BottomRow, t.RightCol) & " "
            End If
            If CType(.Items("StdPop"), RibbonMenu.ToggleButton).Pressed Then
                Str1 = Str1 & "总体标准差:" & t.Aggregate(AggregateEnum.StdPop, t.TopRow, t.LeftCol, t.BottomRow, t.RightCol) & " "
            End If
            If CType(.Items("Var"), RibbonMenu.ToggleButton).Pressed Then
                Str1 = Str1 & "方差:" & t.Aggregate(AggregateEnum.Var, t.TopRow, t.LeftCol, t.BottomRow, t.RightCol) & " "
            End If
            If CType(.Items("VarPop"), RibbonMenu.ToggleButton).Pressed Then
                Str1 = Str1 & "总体方差:" & t.Aggregate(AggregateEnum.VarPop, t.TopRow, t.LeftCol, t.BottomRow, t.RightCol) & " "
            End If
        End With
    End With
    RibbonMenu.StatusBar.Message3 = Str1
End If


--  作者:Bin
--  发布时间:2014/6/28 15:37:00
--  
问题不是出在这里.
--  作者:天若千颖
--  发布时间:2014/6/28 15:38:00
--  
好吧,重做,非常感谢!
--  作者:天若千颖
--  发布时间:2014/6/28 15:51:00
--  

我刚用系统菜单模板生成了菜单,但是以前的项目文件双击还是无法打开,如图,双击项目文件后出现

 

 
图片点击可在新窗口打开查看此主题相关图片如下:33.png
图片点击可在新窗口打开查看

 

只能通过先打开狐表软件,然后在选择项目文件才能正常打开,这个情况如何修复?