标题:如何卸载或关闭弹出式菜单
只看楼主
chen3bing
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:507
专家分:104
注 册:2008-11-12
结帖率:91.22%
已结贴  问题点数:10 回复次数:3 
如何卸载或关闭弹出式菜单
我的弹出式菜单动态加载许多菜单项
请问高手,怎样卸载或关闭弹出式菜单?谢谢!
我的意思,再次打开弹出式菜单,重新加载菜单项。
搜索更多相关主题的帖子: 卸载 关闭 弹出 菜单 加载 
2018-10-31 14:27
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:5 
菜单名:PopMenu,设置不可见
下面子项第一个名字:PopMenulist,设置Index=0

程序代码:
Option Explicit

Public PopMenuIndex As String       '指示当前菜单是由哪个按钮触发的

Private Sub Command1_Click()
'1号按钮

Call ClearPopMenuList               '清原理菜单项
PopMenuIndex = 1                    '1号按钮生成菜单

'-------菜单项---------
PopMenuList(0).Caption = "菜单A0"

Load PopMenuList(1)
PopMenuList(1).Caption = "菜单A1"

Load PopMenuList(2)
PopMenuList(2).Caption = "菜单A2"

PopupMenu PopMenu, , Command1.Left, Command1.Top + Command1.Height          '弹出菜单并定位

End Sub

Public Sub ClearPopMenuList()
'清除菜单内容
Dim i As Long

For i = PopMenuList.Count - 1 To 1 Step -1
    Unload PopMenuList(i)
Next i

PopMenuList(0).Caption = "<无>"

End Sub

Private Sub Command2_Click()
'2号按钮

Call ClearPopMenuList               '清原理菜单项
PopMenuIndex = 2                    '2号按钮生成菜单

'-------菜单项---------
PopMenuList(0).Caption = "菜单B0"

Load PopMenuList(1)
PopMenuList(1).Caption = "菜单B1"

Load PopMenuList(2)
PopMenuList(2).Caption = "菜单B2"


PopupMenu PopMenu, , Command2.Left, Command2.Top + Command2.Height

End Sub

Private Sub PopMenuList_Click(Index As Integer)
'菜单事件

Select Case PopMenuIndex
    Case 1                  '1号按钮
        Select Case Index
        Case 0
            MsgBox "1号按钮0号菜单"
        Case 1
            MsgBox "1号按钮1号菜单"
        Case Else
            MsgBox PopMenuList(Index).Caption
        End Select
    Case 2                  '2号按钮
        MsgBox "2号按钮" & PopMenuList(Index).Caption
End Select

End Sub



---------------------
只是一个示例。
如果菜单项相对固定,可以使用几个菜单,然后按变量指示,再进行选择调用。


授人于鱼,不如授人于渔
早已停用QQ了
2018-10-31 15:37
chen3bing
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:507
专家分:104
注 册:2008-11-12
得分:0 
回复 2楼 风吹过b
谢谢!我明白了,可是还有一个问题
Private Sub TestType_Click()
Dim i&, n As Long
  
Dim MyChar
Dim FileName As String

        TestTypeFlag = True
        FileName = App.Path & "\123.txt"
        Open FileName For Input As #1
        
        i = 1
        Do While Not EOF(1)
             Input #1, MyChar
            '
            Load MenuSub(i)
           
            MenuSub(i).Caption = MyChar
   
             i = i + 1
        Loop
        Close #1
        MenuCount = i - 1               //最后MenuCount=27
          MenuSub(0).Visible = False
         
        Me.PopupMenu MenuTestType


End Sub
以上是我读取文件123.txt,从里面加载数据,显示在子菜单项上,一共27项。
然后用完我卸载:
Private Sub Command2_Click()
Dim j As Long
ControlPanel.Show

For j = 1 To MenuCount
    Unload 试验机.MenuSub(j)
Next j
Unload Me
End Sub
可是出错,提示如上图,好像最后一个菜单项无法卸载。
2018-10-31 16:15
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:5 
首先,0号是无法卸载的。0号只能改名称
如果你 27 条菜单,那编号就应该使用 0-26 号。

卸载时,使用倒序卸载,从最后一个开始卸载。看我的代码里的FOR循环。

你在这个报错时,点调试,然后 点菜单 视图》本地窗口
一层一层的展开,找到你这个 菜单名字 看看有多少个对象。

授人于鱼,不如授人于渔
早已停用QQ了
2018-10-31 17:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-490852-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.517809 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved