EDA365电子论坛网

标题: skill菜单移除求助 [打印本页]

作者: 学无止境```    时间: 2025-5-19 11:54
标题: skill菜单移除求助
    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菜单移除,我是想通过检测菜单下某个子菜单来确定是不是我想要移除的菜单,如果检测到了,那么移除整个菜单,但是不知道为啥反而移除了的子菜单,没有移除整个菜单


作者: db-_-    时间: 2025-5-19 14:24
我之前的回答貌似是有点问题的。

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

如果需要删除主菜单,需要重新Find一下,再删除。
作者: 学无止境```    时间: 2025-5-19 14:33
db-_- 发表于 2025-5-19 14:24
我之前的回答貌似是有点问题的。

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

大佬,方便给个示例代码吗?我重新找了1下菜单,在删除,以后把所有的主菜单都删除了

作者: 学无止境```    时间: 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")
            )
            )

作者: db-_-    时间: 2025-5-19 17:07
子菜单和主菜单貌似没有什么关联性。
子菜单直接就能找到,所以不知道在哪个主菜单里。

建议这么做:
如果能找到子菜单某个命令,直接删除固定位置的主菜单就完事了。
when(axlUIMenuFind(nil "notice")
    q = axlUIMenuFind(nil 12)
    axlUIMenuDelete(q)
)
作者: 学无止境```    时间: 2025-5-19 17:54
db-_- 发表于 2025-5-19 17:07
子菜单和主菜单貌似没有什么关联性。
子菜单直接就能找到,所以不知道在哪个主菜单里。

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

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

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

作者: 亦久忆旧    时间: 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


作者: db-_-    时间: 2025-5-20 09:35
亦久忆旧 发表于 2025-5-19 23:06
let( (x_menuId)x_menuId = axlUIMenuFind(nil -3)
               ^^^^^^^^
SYNTAX ERROR found at li ...

看着像是中间少个空格。

作者: 学无止境```    时间: 2025-5-20 12:28


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


作者: db-_-    时间: 2025-5-21 10:56
学无止境``` 发表于 2025-5-20 12:28
let( (x_menuId)x_menuId = axlUIMenuFind(nil -3)

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

作者: 学无止境```    时间: 2025-5-21 18:15
db-_- 发表于 2025-5-21 10:56
(x_menuId)和x_menuId =之间明显少了个空格

这个换行了,只是在allegro中显示这样

作者: db-_-    时间: 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 这种语法也敲进去

作者: 亦久忆旧    时间: 2025-5-21 23:55
db-_- 发表于 2025-5-21 19:17
明白了,让你一行一行敲,是指一句一句敲。比如一个语法FOREACH有10行,那就不能分成10次敲了。

所以 ...

在17.4中没有发现错误

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

没有发现错误

没有发现错误





欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2