找回密码
 注册
查看: 134|回复: 13
打印 上一主题 下一主题

skill菜单移除求助

[复制链接]
  • TA的每日心情
    开心
    2024-9-6 15:29
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
     楼主| 发表于 2025-5-19 11:54 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
        let( (x_menuId)
                            x_menuId = axlUIMenuFind(nil -3)
                           when(x_menuId        
                    check = axlUIMenuFind(x_menuId "notice")                               
                    if( check
                        then axlUIWPrint(nil "\324\332\304\277\261\352\262\313\265\245\317\302\325\322\265\275Uninstall")
                                     target = axlUIMenuDelete(x_menuId)
                                        when( target
                                                axlUIWPrint(nil "\322\306\263\375\304\277\261\352\262\313\265\245")
                        )                                               
                    else
                                axlUIWPrint(nil "don't find target menu")
                            )
                    )      
                    )
    有大佬指点一下吗?我上述代码是想实现skill菜单移除,我是想通过检测菜单下某个子菜单来确定是不是我想要移除的菜单,如果检测到了,那么移除整个菜单,但是不知道为啥反而移除了的子菜单,没有移除整个菜单

  • TA的每日心情
    奋斗
    2025-4-27 15:26
  • 签到天数: 81 天

    [LV.6]常住居民II

    推荐
    发表于 2025-5-21 19:17 | 只看该作者
    亦久忆旧 发表于 2025-5-19 23:06
    let( (x_menuId)x_menuId = axlUIMenuFind(nil -3)
                   ^^^^^^^^
    SYNTAX ERROR found at li ...

    明白了,让你一行一行敲,是指一句一句敲。比如一个语法FOREACH有10行,那就不能分成10次敲了。

    所以你需要敲关键语句。不是把let 这种语法也敲进去

    点评

    在17.4中没有发现错误  详情 回复 发表于 2025-5-21 23:55
  • TA的每日心情
    奋斗
    2025-4-27 15:26
  • 签到天数: 81 天

    [LV.6]常住居民II

    3#
    发表于 2025-5-19 14:24 | 只看该作者
    我之前的回答貌似是有点问题的。

    菜单是通过菜单栈的形式存在的。也就是说你第二次axlUIMenuFind子菜单的时候,栈已经停在子菜单了。
    其实这里的返回值已经没有意义了。

    如果需要删除主菜单,需要重新Find一下,再删除。

    点评

    let( (x_menuId) x_menuId = axlUIMenuFind(nil -3) when(x_menuId check = axlUIMenuFind(x_menuId "notice")  详情 回复 发表于 2025-5-19 14:53
    大佬,方便给个示例代码吗?我重新找了1下菜单,在删除,以后把所有的主菜单都删除了  详情 回复 发表于 2025-5-19 14:33
  • TA的每日心情
    开心
    2024-9-6 15:29
  • 签到天数: 1 天

    [LV.1]初来乍到

    4#
     楼主| 发表于 2025-5-19 14:33 | 只看该作者
    db-_- 发表于 2025-5-19 14:24
    我之前的回答貌似是有点问题的。

    菜单是通过菜单栈的形式存在的。也就是说你第二次axlUIMenuFind子菜单 ...

    大佬,方便给个示例代码吗?我重新找了1下菜单,在删除,以后把所有的主菜单都删除了
  • TA的每日心情
    开心
    2024-9-6 15:29
  • 签到天数: 1 天

    [LV.1]初来乍到

    5#
     楼主| 发表于 2025-5-19 14:53 | 只看该作者
    本帖最后由 学无止境``` 于 2025-5-19 14:56 编辑

            let( (x_menuId)
                x_menuId = axlUIMenuFind(nil -3)
                when(x_menuId        
                    check = axlUIMenuFind(x_menuId "notice")                              
                    if( check
                        then
                            re_menuId = axlUIMenuFind(nil -3)                                       
                            target = axlUIMenuDelete(re_menuId)
                            when( target
                                axlUIWPrint(nil "\322\306\263\375\304\277\261\352\262\313\265\245")
                        )                                               
                    else
                                axlUIWPrint(nil "don't find target menu")
                            )
                    )      
                    )
    大佬这个代码功能是正常的,如果我要遍历所有的菜单,然后找到每个菜单下面有notice命令的菜单,再进行删除主菜单的话,应该怎么弄?我写了个循环,但是会把所有的菜单删除掉:
                    let((q mainMenuId targetCmdId found maxIndex targetmenuId)
                ;;; 动态获取主菜单项的最大索引
                maxIndex = 20
                ;;; 遍历菜单ID:0-20主菜单项
                for(q 0 maxIndex
                                mainMenuId = axlUIMenuFind(nil q nil)
                    when(mainMenuId
                    targetCmdId = axlUIMenuFind(mainMenuId "notice")
                    if(targetCmdId
                    then
                                      x_menuId = axlUIMenuFind(nil mainMenuId nil)
                      targetmenuId = axlUIMenuDelete(x_menuId)
                      axlUIWPrint(nil "SKILL\262\313\265\245\263\311\271\246\311\276\263\375")
                      found = t
                                      
                    )
                                    )
                )
                unless(found
                  axlUIWPrint(nil "SKILL\262\313\265\245\311\276\263\375\312\247\260\334")
                )
                )
  • TA的每日心情
    奋斗
    2025-4-27 15:26
  • 签到天数: 81 天

    [LV.6]常住居民II

    6#
    发表于 2025-5-19 17:07 | 只看该作者
    子菜单和主菜单貌似没有什么关联性。
    子菜单直接就能找到,所以不知道在哪个主菜单里。

    建议这么做:
    如果能找到子菜单某个命令,直接删除固定位置的主菜单就完事了。
    when(axlUIMenuFind(nil "notice")
        q = axlUIMenuFind(nil 12)
        axlUIMenuDelete(q)
    )

    点评

    大佬,这个代码可以在16.6中删除菜单,但是在17.4中不起作用  详情 回复 发表于 2025-5-19 17:54
  • TA的每日心情
    开心
    2024-9-6 15:29
  • 签到天数: 1 天

    [LV.1]初来乍到

    7#
     楼主| 发表于 2025-5-19 17:54 | 只看该作者
    db-_- 发表于 2025-5-19 17:07
    子菜单和主菜单貌似没有什么关联性。
    子菜单直接就能找到,所以不知道在哪个主菜单里。

    大佬,这个代码可以在16.6中删除菜单,但是在17.4中不起作用

    点评

    你一行一行在控制台敲一下试试  详情 回复 发表于 2025-5-19 18:35
  • TA的每日心情
    奋斗
    2025-4-27 15:26
  • 签到天数: 81 天

    [LV.6]常住居民II

    8#
    发表于 2025-5-19 18:35 | 只看该作者
    学无止境``` 发表于 2025-5-19 17:54
    大佬,这个代码可以在16.6中删除菜单,但是在17.4中不起作用

    你一行一行在控制台敲一下试试

    点评

    let( (x_menuId)x_menuId = axlUIMenuFind(nil -3) ^^^^^^^^ SYNTAX ERROR found at line 1 column 16 of file *string* *Error* lineread/read: syntax error encountered in input  详情 回复 发表于 2025-5-19 23:06
  • TA的每日心情
    开心
    2024-9-17 15:51
  • 签到天数: 2 天

    [LV.1]初来乍到

    9#
    发表于 2025-5-19 23:06 | 只看该作者
    db-_- 发表于 2025-5-19 18:35
    你一行一行在控制台敲一下试试

    let( (x_menuId)x_menuId = axlUIMenuFind(nil -3)
                   ^^^^^^^^
    SYNTAX ERROR found at line 1 column 16 of file *string*
    *Error* lineread/read: syntax error encountered in input

    点评

    明白了,让你一行一行敲,是指一句一句敲。比如一个语法FOREACH有10行,那就不能分成10次敲了。 所以你需要敲关键语句。不是把let 这种语法也敲进去  详情 回复 发表于 2025-5-21 19:17
    看着像是中间少个空格。  详情 回复 发表于 2025-5-20 09:35
  • TA的每日心情
    奋斗
    2025-4-27 15:26
  • 签到天数: 81 天

    [LV.6]常住居民II

    10#
    发表于 2025-5-20 09:35 | 只看该作者
    亦久忆旧 发表于 2025-5-19 23:06
    let( (x_menuId)x_menuId = axlUIMenuFind(nil -3)
                   ^^^^^^^^
    SYNTAX ERROR found at li ...

    看着像是中间少个空格。

    点评

    let( (x_menuId)x_menuId = axlUIMenuFind(nil -3)[/backcolor]  详情 回复 发表于 2025-5-20 12:28
  • TA的每日心情
    开心
    2024-9-6 15:29
  • 签到天数: 1 天

    [LV.1]初来乍到

    11#
     楼主| 发表于 2025-5-20 12:28 | 只看该作者


    let( (x_menuId)x_menuId = axlUIMenuFind(nil -3)

    点评

    (x_menuId)和x_menuId =之间明显少了个空格  详情 回复 发表于 2025-5-21 10:56
  • TA的每日心情
    奋斗
    2025-4-27 15:26
  • 签到天数: 81 天

    [LV.6]常住居民II

    12#
    发表于 2025-5-21 10:56 | 只看该作者
    学无止境``` 发表于 2025-5-20 12:28
    let( (x_menuId)x_menuId = axlUIMenuFind(nil -3)

    (x_menuId)和x_menuId =之间明显少了个空格

    点评

    这个换行了,只是在allegro中显示这样  详情 回复 发表于 2025-5-21 18:15
  • TA的每日心情
    开心
    2024-9-6 15:29
  • 签到天数: 1 天

    [LV.1]初来乍到

    13#
     楼主| 发表于 2025-5-21 18:15 | 只看该作者
    db-_- 发表于 2025-5-21 10:56
    (x_menuId)和x_menuId =之间明显少了个空格

    这个换行了,只是在allegro中显示这样
  • TA的每日心情
    开心
    2024-9-17 15:51
  • 签到天数: 2 天

    [LV.1]初来乍到

    14#
    发表于 2025-5-21 23:55 | 只看该作者
    db-_- 发表于 2025-5-21 19:17
    明白了,让你一行一行敲,是指一句一句敲。比如一个语法FOREACH有10行,那就不能分成10次敲了。

    所以 ...

    在17.4中没有发现错误

    1.png (14.71 KB, 下载次数: 0)

    没有发现错误

    没有发现错误
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-5-23 03:07 , Processed in 0.093750 second(s), 29 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表