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