Genexus Extensions SDK - 我在哪里可以找到可用的菜单上下文字符串?
Genexus Extensions SDK - Where can I find the avaliable Menu Context strings?
我正在尝试使用 Genexus Extensions SDK 在 IDE 上放置按钮,在这种情况下,我想将其放置在“上下文”菜单中,仅在“[=37] 类型的对象中可用=]”和“交易”,就像 WorkWithPlus 在这里做的那样:
到目前为止,深入研究可用文档,我注意到您需要将上下文类型字符串放入 xml 标记和您打算添加的包的 GUID菜单项,例如下面 GeneXusPackage.package
:
上面的上下文 ID 会将项目添加到“文件夹视图”上下文中。
我的问题:
- 在哪里可以找到包含所有可能的 ID 上下文字符串的列表?
- 那个包属性有什么用,我在哪里可以得到它的可能值?
我正在使用 Genexus 16 U11 的 SDK
很抱歉,没有所有可用菜单的详尽列表。直到现在我才想到它,我看到了它的用处,所以我们一定会考虑将它作为 SDK 的一部分,以便任何包实现者可以参考它。
同时,要在您提到的上下文菜单中添加新命令,您必须将其添加到列为该菜单一部分的命令组中。该组是 KBObjectGrp
,由核心 shell 包提供,其 ID 是 98121D96-A7D8-468b-9310-B1F468F812AE
。
首先在命令部分的 .package 文件中定义命令:
<Commands>
<CommandDefinition id='MyCommand' context='selection'/>
</Commands>
然后加上前面提到的KBObjectGrp
<Groups>
<Group refid='KBObjectGrp' package='98121D96-A7D8-468b-9310-B1F468F812AE'>
<Command refid='MyCommand' />
</Group>
</Groups>
然后为了使您的命令仅对您之前所说的对象可用,您必须为命令编写一个查询处理程序,它将在命令启用、禁用或根本不可见时进行规则。您可以在包 class.
的 Initialize 方法中执行此操作
public override void Initialize(IGxServiceProvider services)
{
base.Initialize(services);
CommandKey myCmdKey = new CommandKey(Id, "MyCommand");
AddCommand(myCmdKey, ExecMyCommand, QueryMyCommand);
}
private bool QueryMyCommand(CommandData data, ref CommandStatus status)
{
var selection = KBObjectSelectionHelper.TryGetKBObjectsFrom(data.Context).ToList();
status.Visible(selection.Count > 0 && selection.All(obj => obj.Type == ObjClass.Transaction || obj.Type == ObjClass.WebPanel));
return true;
}
private bool ExecMyCommand(CommandData data)
{
// Your command here
return true;
}
我在这里使用了一些助手 classes 来从选择中获取对象,然后是一个名为 ObjClass
的 class,它公开了最常见的 guid对象类型。如果您觉得有些地方不够清楚,请随时联系我们。
反编译Genexus dll,寻找名为package的资源,可以推断出是什么名字。
很麻烦但是很管用
我正在尝试使用 Genexus Extensions SDK 在 IDE 上放置按钮,在这种情况下,我想将其放置在“上下文”菜单中,仅在“[=37] 类型的对象中可用=]”和“交易”,就像 WorkWithPlus 在这里做的那样:
到目前为止,深入研究可用文档,我注意到您需要将上下文类型字符串放入 xml 标记和您打算添加的包的 GUID菜单项,例如下面 GeneXusPackage.package
:
上面的上下文 ID 会将项目添加到“文件夹视图”上下文中。
我的问题:
- 在哪里可以找到包含所有可能的 ID 上下文字符串的列表?
- 那个包属性有什么用,我在哪里可以得到它的可能值?
我正在使用 Genexus 16 U11 的 SDK
很抱歉,没有所有可用菜单的详尽列表。直到现在我才想到它,我看到了它的用处,所以我们一定会考虑将它作为 SDK 的一部分,以便任何包实现者可以参考它。
同时,要在您提到的上下文菜单中添加新命令,您必须将其添加到列为该菜单一部分的命令组中。该组是 KBObjectGrp
,由核心 shell 包提供,其 ID 是 98121D96-A7D8-468b-9310-B1F468F812AE
。
首先在命令部分的 .package 文件中定义命令:
<Commands>
<CommandDefinition id='MyCommand' context='selection'/>
</Commands>
然后加上前面提到的KBObjectGrp
<Groups>
<Group refid='KBObjectGrp' package='98121D96-A7D8-468b-9310-B1F468F812AE'>
<Command refid='MyCommand' />
</Group>
</Groups>
然后为了使您的命令仅对您之前所说的对象可用,您必须为命令编写一个查询处理程序,它将在命令启用、禁用或根本不可见时进行规则。您可以在包 class.
的 Initialize 方法中执行此操作public override void Initialize(IGxServiceProvider services)
{
base.Initialize(services);
CommandKey myCmdKey = new CommandKey(Id, "MyCommand");
AddCommand(myCmdKey, ExecMyCommand, QueryMyCommand);
}
private bool QueryMyCommand(CommandData data, ref CommandStatus status)
{
var selection = KBObjectSelectionHelper.TryGetKBObjectsFrom(data.Context).ToList();
status.Visible(selection.Count > 0 && selection.All(obj => obj.Type == ObjClass.Transaction || obj.Type == ObjClass.WebPanel));
return true;
}
private bool ExecMyCommand(CommandData data)
{
// Your command here
return true;
}
我在这里使用了一些助手 classes 来从选择中获取对象,然后是一个名为 ObjClass
的 class,它公开了最常见的 guid对象类型。如果您觉得有些地方不够清楚,请随时联系我们。
反编译Genexus dll,寻找名为package的资源,可以推断出是什么名字。 很麻烦但是很管用