请问论坛里的老师。我有两个自定义的工作流,我想实现通过代码控制自定义工作流显示、隐藏,比如只显示其中一个,另一个不显示。我看Ribbon里面有Visibility里面有对应的表达式。
我尝试了使用Named Expression里新建一个表达式,然后通过ConfigurationManager下面的方法新建一个变量并给变量赋值;
其中Named Expression的表达式是判断新建的变量是否存在且它的值是否是我定义时赋给的值。
大概代码是:
清除全部自定义的变量:
ConfigurationManager.UndefineVariable;
然后根据我想显示的工作流,定义对应的变量。每个工作流的Ribbon显示设置选项对应一个命名表达式
DefineVariable (WCharCP cfgVarName, WCharCP cfgValue, ConfigurationVariableLevel level=ConfigurationVariableLevel::User)
最后发送keyin命令,显示对应的工作流。
但是我发现只有第一次运行程序的时候会显示其中一个工作流,但是再次执行程序的时候,我发现变量也变过来了,命名表达式也是正确的,但是工作流并没有切换过来,也没有显示出来我想要显示的工作流。
请老师指导
我看创建新的工作流时只有一个Visibility,但没有Synchronize事件可设置呀。
不像如下文章中所描述的那样。
你好,我看了一下这篇文章
Yongan.Fu said:控制MSCE中Ribbon按钮的可见性
我试着操作了一下,可为什么我的表达式下面没有编辑框呢
这篇文章的基础篇如下:
通过定制界面启动应用程序
在该基础篇中强调了,需要定义一个自己的DGNLIB文件,而且该DGNLIB文件必须位于指定的位置。只有满足了这两个条件才允许可定义Ribbon界面。同理,这个NamedExpression的定义也需要满足这两个条件。
你可以按基础篇中的描述操作一下。
你好,我是按照步骤自己创建了一个dgnlib,存放路径为C:\ProgramData\Bentley\MicroStation CONNECT Edition\Configuration\Organization\Dgnlib\Gui,还是不行,然后我在同事电脑试了一遍没有问题,会出现编辑框,最后发现是软件语言版本的问题,我软件用的中文,切换为英文就没问题了