Skip to content

与事件处理相关的属性

CancelLastCommand

说明:
布尔型;只写;在"OnFileCommand"事件中使用。请参考"OnFileCommand"事件。设置最后一次的文件操作是否应该取消。该属性可用于接管缺省的工具栏的新建,打开或者保存操作,并设置该参数为true来取消缺省操作。

语法:

javascript
// 设置
Obj.CancelLastCommand = true;  // 或 false

使用示例:

javascript
// 接管保存菜单和按钮的操作,并取消缺省的操作
<script language="JScript" for="TANGER_OCX" event="OnFileCommand(cmd,canceled)">
    if (cmd == 3) { // user has clicked on file save menu or button
        // save to server
        // cancel default process
        TANGER_OCX_SaveEditToServerDisk();
        document.getElementById("TANGER_OCX").CancelLastCommand = true;
    }
</script>

功能说明:

  • true:取消最后一次的文件操作
  • false:不取消操作(默认)

CancelSheetDoubleClick

说明:
布尔型;只写;设置是否取消Excel双击操作。该属性必须在事件OnSheetBeforeDoubleClick中使用。请参考事件OnSheetBeforeDoubleClick的介绍。

语法:

javascript
// 设置
Obj.CancelSheetDoubleClick = true;  // 或 false

使用示例:

javascript
// 在OnSheetBeforeDoubleClick事件中取消Excel双击操作
<script language="JScript" for="TANGER_OCX" event="OnSheetBeforeDoubleClick(arg1, arg2, arg3, arg4)">
    // 自定义双击处理逻辑
    console.log("Excel双击事件被触发");
    
    // 取消默认的双击操作
    TANGER_OCX.CancelSheetDoubleClick = true;
</script>

CancelSheetRightClick

说明:
布尔型;只写;设置是否取消Excel右键操作。该属性必须在事件OnSheetBeforeRightClick中使用。请参考事件OnSheetBeforeRightClick的介绍。

语法:

javascript
// 设置
Obj.CancelSheetRightClick = true;  // 或 false

使用示例:

javascript
// 在OnSheetBeforeRightClick事件中取消Excel右键操作
<script language="JScript" for="TANGER_OCX" event="OnSheetBeforeRightClick(arg1, arg2, arg3, arg4)">
    // 自定义右键处理逻辑
    console.log("Excel右键事件被触发");
    
    // 取消默认的右键操作
    TANGER_OCX.CancelSheetRightClick = true;
    
    // 设置自定义右键菜单
    TANGER_OCX.CustomMenuStr = "插入行=1&插入图片=2&插入文字=3";
</script>

CancelWordRightClick

说明:
布尔型;只写;设置是否取消Word、WPS右键操作。该属性必须在事件OnWordBeforeRightClick中使用。请参考事件OnWordBeforeRightClick的介绍。

语法:

javascript
// 设置
Obj.CancelWordRightClick = true;  // 或 false

使用示例:

javascript
// 在OnWordBeforeRightClick事件中取消Word右键操作
<script language="JScript" for="TANGER_OCX" event="OnWordBeforeRightClick(arg1, arg2)">
    // 自定义右键处理逻辑
    console.log("Word右键事件被触发");
    
    // 取消默认的右键操作
    TANGER_OCX.CancelWordRightClick = true;
    
    // 设置自定义右键菜单
    TANGER_OCX.CustomMenuStr = "插入表格=1&插入图片=2&插入文字=3";
</script>

CancelWordDoubleClick

说明:
布尔型;只写;设置是否取消Word、WPS双击操作。该属性必须在事件OnWordBeforeDoubleClick中使用。请参考事件OnWordBeforeDoubleClick的介绍。

语法:

javascript
// 设置
Obj.CancelWordDoubleClick = true;  // 或 false

使用示例:

javascript
// 在OnWordBeforeDoubleClick事件中取消Word双击操作
<script language="JScript" for="TANGER_OCX" event="OnWordBeforeDoubleClick(arg1, arg2)">
    // 自定义双击处理逻辑
    console.log("Word双击事件被触发");
    
    // 取消默认的双击操作
    TANGER_OCX.CancelWordDoubleClick = true;
</script>

CancelPPTRightClick

说明:
布尔型;只写;设置是否取消PPT文档中的右键操作。该属性必须在事件OnPPTBeforeRightClick中使用。请参考事件OnPPTBeforeRightClick的介绍。

语法:

javascript
// 设置
Obj.CancelPPTRightClick = true;  // 或 false

使用示例:

javascript
// 在OnPPTBeforeRightClick事件中取消PPT右键操作
<script language="JScript" for="TANGER_OCX" event="OnPPTBeforeRightClick(arg1, arg2)">
    // 自定义右键处理逻辑
    console.log("PPT右键事件被触发");
    
    // 取消默认的右键操作
    TANGER_OCX.CancelPPTRightClick = true;
</script>

综合使用示例

文件操作接管

javascript
// 接管文件操作
<script language="JScript" for="TANGER_OCX" event="OnFileCommand(cmd, canceled)">
    switch(cmd) {
        case 0: // 新建
            console.log("用户点击了新建");
            // 自定义新建逻辑
            TANGER_OCX.CancelLastCommand = true;
            break;
        case 1: // 打开
            console.log("用户点击了打开");
            // 自定义打开逻辑
            TANGER_OCX.CancelLastCommand = true;
            break;
        case 3: // 保存
            console.log("用户点击了保存");
            // 保存到服务器
            TANGER_OCX_SaveEditToServerDisk();
            TANGER_OCX.CancelLastCommand = true;
            break;
        default:
            console.log("其他文件操作:", cmd);
    }
</script>

Excel事件处理

javascript
// Excel双击事件处理
<script language="JScript" for="TANGER_OCX" event="OnSheetBeforeDoubleClick(arg1, arg2, arg3, arg4)">
    console.log("Excel双击事件");
    console.log("参数1:", arg1);
    console.log("参数2:", arg2);
    console.log("参数3:", arg3);
    console.log("参数4:", arg4);
    
    // 取消默认双击操作
    TANGER_OCX.CancelSheetDoubleClick = true;
    
    // 自定义双击处理
    // 例如:打开单元格编辑模式
</script>

// Excel右键事件处理
<script language="JScript" for="TANGER_OCX" event="OnSheetBeforeRightClick(arg1, arg2, arg3, arg4)">
    console.log("Excel右键事件");
    
    // 取消默认右键操作
    TANGER_OCX.CancelSheetRightClick = true;
    
    // 设置自定义右键菜单
    TANGER_OCX.CustomMenuStr = "插入行=1&插入列=2&删除行=3&删除列=4";
</script>

Word事件处理

javascript
// Word双击事件处理
<script language="JScript" for="TANGER_OCX" event="OnWordBeforeDoubleClick(arg1, arg2)">
    console.log("Word双击事件");
    
    // 取消默认双击操作
    TANGER_OCX.CancelWordDoubleClick = true;
    
    // 自定义双击处理
    // 例如:打开文档属性对话框
</script>

// Word右键事件处理
<script language="JScript" for="TANGER_OCX" event="OnWordBeforeRightClick(arg1, arg2)">
    console.log("Word右键事件");
    
    // 取消默认右键操作
    TANGER_OCX.CancelWordRightClick = true;
    
    // 设置自定义右键菜单
    TANGER_OCX.CustomMenuStr = "插入表格=1&插入图片=2&插入文字=3&格式化=4";
</script>

PPT事件处理

javascript
// PPT右键事件处理
<script language="JScript" for="TANGER_OCX" event="OnPPTBeforeRightClick(arg1, arg2)">
    console.log("PPT右键事件");
    
    // 取消默认右键操作
    TANGER_OCX.CancelPPTRightClick = true;
    
    // 自定义右键处理
    // 例如:显示自定义菜单
</script>

属性分类总结

分类属性功能类型适用事件
文件操作CancelLastCommand取消文件操作BooleanOnFileCommand
Excel事件CancelSheetDoubleClick取消Excel双击BooleanOnSheetBeforeDoubleClick
CancelSheetRightClick取消Excel右键BooleanOnSheetBeforeRightClick
Word事件CancelWordDoubleClick取消Word双击BooleanOnWordBeforeDoubleClick
CancelWordRightClick取消Word右键BooleanOnWordBeforeRightClick
PPT事件CancelPPTRightClick取消PPT右键BooleanOnPPTBeforeRightClick

事件处理流程

1. 事件触发阶段

javascript
// 事件触发时的处理流程
function handleEvent(eventType, args) {
    console.log("事件类型:", eventType);
    console.log("事件参数:", args);
    
    // 根据事件类型进行相应处理
    switch(eventType) {
        case 'OnFileCommand':
            handleFileCommand(args);
            break;
        case 'OnSheetBeforeDoubleClick':
            handleSheetDoubleClick(args);
            break;
        case 'OnWordBeforeRightClick':
            handleWordRightClick(args);
            break;
        // 其他事件类型...
    }
}

2. 取消操作阶段

javascript
// 取消默认操作
function cancelDefaultOperation(operationType) {
    switch(operationType) {
        case 'file':
            Obj.CancelLastCommand = true;
            break;
        case 'sheetDoubleClick':
            Obj.CancelSheetDoubleClick = true;
            break;
        case 'sheetRightClick':
            Obj.CancelSheetRightClick = true;
            break;
        case 'wordDoubleClick':
            Obj.CancelWordDoubleClick = true;
            break;
        case 'wordRightClick':
            Obj.CancelWordRightClick = true;
            break;
        case 'pptRightClick':
            Obj.CancelPPTRightClick = true;
            break;
    }
}

3. 自定义处理阶段

javascript
// 自定义事件处理
function customEventHandling(eventType, args) {
    // 取消默认操作
    cancelDefaultOperation(eventType);
    
    // 执行自定义逻辑
    switch(eventType) {
        case 'OnFileCommand':
            // 自定义文件操作
            customFileOperation(args);
            break;
        case 'OnSheetBeforeRightClick':
            // 自定义Excel右键菜单
            customSheetRightClickMenu();
            break;
        case 'OnWordBeforeRightClick':
            // 自定义Word右键菜单
            customWordRightClickMenu();
            break;
    }
}

注意事项

  1. 事件绑定:所有取消属性必须在相应的事件处理函数中使用
  2. 只写属性:这些属性都是只写属性,不能读取
  3. 事件时机:属性必须在事件触发时立即设置
  4. 自定义逻辑:取消默认操作后,需要实现自定义的处理逻辑
  5. 菜单设置:取消右键操作后,可以设置自定义右键菜单
  6. 错误处理:实现完善的错误处理机制
  7. 性能考虑:避免在事件处理中执行耗时操作

错误处理

javascript
// 事件处理错误处理
function handleEventError(eventType, error) {
    console.error("事件处理错误:", eventType, error.message);
    
    // 根据错误类型进行相应处理
    switch(eventType) {
        case 'OnFileCommand':
            // 文件操作错误处理
            console.log("文件操作失败,恢复默认行为");
            Obj.CancelLastCommand = false;
            break;
        case 'OnSheetBeforeRightClick':
            // Excel右键错误处理
            console.log("Excel右键处理失败,恢复默认行为");
            Obj.CancelSheetRightClick = false;
            break;
        // 其他错误处理...
    }
}

最佳实践

  1. 事件绑定:在页面加载时正确绑定事件处理函数
  2. 错误处理:实现完善的错误处理机制
  3. 自定义逻辑:在取消默认操作后,实现完整的自定义逻辑
  4. 菜单设计:设计用户友好的自定义菜单
  5. 性能优化:避免在事件处理中执行耗时操作
  6. 测试验证:充分测试各种事件处理场景