Skip to content

自定义菜单相关方法

AddCustomMenu2

语法

javascript
AddCustomMenu2(menuPos, cmnuCaption)

功能

在菜单栏里增加一个自定义主菜单项目。

参数

名称必选/可选数据类型说明
menuPos必选long菜单的位置,取值0-9
cmnuCaption必选string菜单标题

返回值

无返回值。

说明

在菜单栏里增加一个自定义主菜单项目。 请参考AddCustomMenuItem2方法和OnCustomMenuCmd2事件的介绍。 并不能捕获点击弹出菜单的事件,只能捕获菜单项目(MenuItem)的事件。

示例代码

javascript
// 简单示例
for(var menuPos=0; menuPos<3; menuPos++) {
    OCX_OBJ.AddCustomMenu2(menuPos, "菜单"+menuPos+"(&"+menuPos+")");
}

// 详细示例请参考AddCustomMenuItem2方法的示例

AddCustomMenuItem2

语法

javascript
AddCustomMenuItem2(menuPos, subMenuPos, subsubMenuPos, isSubMenu, cmnuCaption, [IsSeparator], [cmnuID])

功能

在指定自定义主菜单中增加一个自定义子菜单项目。

参数

名称必选/可选数据类型说明
menuPos必选long菜单的位置,取值0-9
subMenuPos必选long二级菜单位置,取值0-39
subsubMenuPos必选long三级菜单位置,取值-1-48
isSubMenu必选bool是否是二级菜单子菜单
cmnuCaption必选string菜单标题
IsSeparator可选bool是否分隔,默认false
cmnuID可选long菜单ID,默认=0

返回值

无返回值。

说明

在指定自定义主菜单中增加一个自定义二级或者三级菜单项目(主菜单作为一级菜单)自定义主菜单采用AddCustomMenu2方法添加。

注意:AddCustomMenuItem2第3个参数,如果为-1,则创建2级菜单项目,如果为0-48,创建3级菜单项目。每个二级菜单和三级菜单的位置必须从0开始。

参数详细说明

  • menuPos:要在其中增加项目的自定义主菜单(一级菜单)的位置。0-9。该自定义主菜单必须已经使用AddCustomMenu2方法增加。
  • subMenuPos:要增加的项目在二级菜单项中的位置。必须从0开始增加此参数。取值:0-39。要增加二级菜单项目,请将后面的subsubMenuPos设定为-1。并将isSubMenu参数设定为false,要增加具有三级菜单的二级菜单,请将后面的subsubMenuPos设定为-1。并将isSubMenu参数设定为true。
  • subsubMenuPos:要增加的项目在三级菜单项中的位置。必须从0开始增加此参数。取值:-1-48。如果为-1,则增加二级菜单的项目或者子菜单。如果为0-48,则增加三级菜单条目。如果isSubMenu参数为true,则忽略此参数。
  • isSubMenu:说明该菜单项目是否是一个二级菜单中的子菜单,而不是菜单项目。
  • cmnuID:菜单的ID。可以被用来在事件处理程序OnCustomMenuCmd2中判断用户单击了哪个菜单项目。

示例代码

javascript
function AddCustomBar() {
    // 添加自定义主菜单
    app.AddCustomMenu2(0, "自定义菜单");
    
    // 添加二级菜单项目
    app.AddCustomMenuItem2(0, 0, -1, false, "测试1");
    
    // 添加带三级菜单的二级菜单
    app.AddCustomMenuItem2(0, 1, -1, true, "测试2");
    
    // 添加三级菜单项目
    app.AddCustomMenuItem2(0, 1, 0, false, "测试1");
    app.AddCustomMenuItem2(0, 1, 1, false, "测试2");
    app.AddCustomMenuItem2(0, 1, 2, false, "测试3");
}

AddFileMenuItem

语法

javascript
AddFileMenuItem(cmnuCaption, [IsSeparator], [IsNeedOpenDoc], [cmnuID])

功能

在自定义的文件菜单中增加自定义菜单项。

参数

名称必选/可选数据类型说明
cmnuCaption必选string菜单项目的标题
IsSeparator可选bool是否分隔,默认为false
IsNeedOpenDoc可选bool是否需要打开文档,默认为true
cmnuID可选long菜单ID,默认=0

返回值

无返回值。

说明

在自定义的文件菜单中增加自定义菜单项。 该方法的参数和含义与AddCustomMenuItem2方法相同,只是该方法是在文件菜单中增加自定义的菜单项。

示例代码

javascript
// 在文件菜单中添加自定义菜单项
OCX_OBJ.AddFileMenuItem("自定义功能1");
OCX_OBJ.AddFileMenuItem("", true); // 添加分隔线
OCX_OBJ.AddFileMenuItem("自定义功能2", false, true, 100);

EnableCustomMenuItem2

语法

javascript
EnableCustomMenuItem2(menuPos, subMenuPos, subsubMenuPos, bEnabled)

功能

用来禁用或者允许使用某个菜单项目。

参数

名称必选/可选数据类型说明
menuPos必选long菜单的位置,取值0-9
subMenuPos必选long二级菜单位置,取值0-39
subsubMenuPos必选long三级菜单位置,取值-1-48
bEnabled必选bool是否禁用指定的菜单项目

返回值

无返回值。

说明

用来禁用或者允许使用某个菜单项目。

参数详细说明

  • menuPos:要允许/禁用的项目的自定义主菜单(一级菜单)的位置。0-9。该自定义主菜单必须已经使用AddCustomMenu2方法增加。
  • subMenuPos:要允许/禁用的项目在二级菜单项中的位置。必须从0开始增加此参数。取值:0-39。要允许/禁用二级菜单项目,请将后面的subsubMenuPos设定为-1。
  • subsubMenuPos:要允许/禁用的项目在三级菜单项中的位置。必须从0开始增加此参数。取值:-1-48。如果为-1,则允许/禁用二级菜单的项目或者子菜单。如果为0-48,则允许/禁用三级菜单条目。
  • bEnabled:说明是允许还是禁用指定的菜单项目。

示例代码

javascript
// 禁用菜单项
OCX_OBJ.EnableCustomMenuItem2(0, 0, -1, false); // 禁用二级菜单项
OCX_OBJ.EnableCustomMenuItem2(0, 1, 0, false);  // 禁用三级菜单项

// 启用菜单项
OCX_OBJ.EnableCustomMenuItem2(0, 0, -1, true);  // 启用二级菜单项
OCX_OBJ.EnableCustomMenuItem2(0, 1, 0, true);   // 启用三级菜单项

RemoveCustomMenu2

语法

javascript
RemoveCustomMenu2(menuPos)

功能

删除指定的自定义主菜单项目。

参数

名称必选/可选数据类型说明
menuPos必选long菜单的位置,取值0-9

返回值

无返回值。

说明

删除指定的自定义主菜单项目。

示例代码

javascript
// 删除位置为0的自定义主菜单
OCX_OBJ.RemoveCustomMenu2(0);

AddCustomButtonOnMenu

语法

javascript
AddCustomButtonOnMenu(btnPos, btnCaption, [IsNeedOpenDoc], [cmnuID])

功能

在菜单右侧增加自定义按钮。

参数

名称必选/可选数据类型说明
btnPos必选string按钮位置,取值0-9
btnCaption必选string按钮标题
IsNeedOpenDoc可选bool是否需要打开文档,默认为true
cmnuID可选long按钮ID,默认=0

返回值

无返回值。

说明

自定义菜单栏按钮始终保持在文件菜单以及自定义菜单右侧位置,而非在控件最右边添加的按钮。

参数详细说明

  • IsNeedOpenDoc:该按钮是否需要打开的文档。如果为false,则按钮总是可用。否则,只有打开文档时按钮才可用。
  • cmdID:可用于在按钮处理事件中标识按钮。或者用第一个参数btnPos也可以。默认和btnPos数值相同。

示例代码

javascript
// 添加自定义按钮
OCX_OBJ.AddCustomButtonOnMenu(0, "自定义按钮1");
OCX_OBJ.AddCustomButtonOnMenu(1, "自定义按钮2", false, 101);
OCX_OBJ.AddCustomButtonOnMenu(2, "需要文档的按钮", true, 102);

RemoveCustomButtonOnMenu

语法

javascript
RemoveCustomButtonOnMenu(btnPos)

功能

删除菜单上的指定位置的自定义的按钮。

参数

名称必选/可选数据类型说明
btnPos必选long按钮位置,取值0-9

返回值

无返回值。

说明

删除菜单上的指定位置的自定义的按钮。

示例代码

javascript
// 删除位置为0的自定义按钮
OCX_OBJ.RemoveCustomButtonOnMenu(0);

完整示例

javascript
// 创建完整的自定义菜单系统
function createCustomMenuSystem() {
    // 1. 添加自定义主菜单
    OCX_OBJ.AddCustomMenu2(0, "工具菜单");
    OCX_OBJ.AddCustomMenu2(1, "帮助菜单");
    
    // 2. 为第一个主菜单添加子菜单
    OCX_OBJ.AddCustomMenuItem2(0, 0, -1, false, "工具1", false, 100);
    OCX_OBJ.AddCustomMenuItem2(0, 1, -1, false, "工具2", false, 101);
    OCX_OBJ.AddCustomMenuItem2(0, 2, -1, true, "更多工具"); // 子菜单
    OCX_OBJ.AddCustomMenuItem2(0, 2, 0, false, "高级工具1", false, 102);
    OCX_OBJ.AddCustomMenuItem2(0, 2, 1, false, "高级工具2", false, 103);
    
    // 3. 为第二个主菜单添加子菜单
    OCX_OBJ.AddCustomMenuItem2(1, 0, -1, false, "帮助文档", false, 200);
    OCX_OBJ.AddCustomMenuItem2(1, 1, -1, false, "关于", false, 201);
    
    // 4. 在文件菜单中添加自定义项
    OCX_OBJ.AddFileMenuItem("自定义保存", false, true, 300);
    OCX_OBJ.AddFileMenuItem("", true); // 分隔线
    OCX_OBJ.AddFileMenuItem("自定义导出", false, true, 301);
    
    // 5. 添加菜单栏按钮
    OCX_OBJ.AddCustomButtonOnMenu(0, "快速保存", true, 400);
    OCX_OBJ.AddCustomButtonOnMenu(1, "设置", false, 401);
}

// 动态控制菜单状态
function toggleMenuItems(enabled) {
    OCX_OBJ.EnableCustomMenuItem2(0, 0, -1, enabled);
    OCX_OBJ.EnableCustomMenuItem2(0, 1, -1, enabled);
}

// 清理自定义菜单
function cleanupCustomMenus() {
    OCX_OBJ.RemoveCustomMenu2(0);
    OCX_OBJ.RemoveCustomMenu2(1);
    OCX_OBJ.RemoveCustomButtonOnMenu(0);
    OCX_OBJ.RemoveCustomButtonOnMenu(1);
}

注意事项

  1. 菜单位置限制:主菜单位置取值0-9,二级菜单0-39,三级菜单-1到48
  2. 菜单层级关系:必须先创建主菜单,再创建子菜单
  3. 菜单ID:建议为每个菜单项设置唯一的ID,便于事件处理
  4. 按钮位置:自定义按钮始终在菜单右侧,不在控件最右边
  5. 文档依赖:某些菜单项和按钮可能需要打开文档才能使用
  6. 事件处理:需要配合OnCustomMenuCmd2事件来处理菜单点击
  7. 菜单清理:使用完毕后建议删除不需要的自定义菜单和按钮