DSOframer 的主要事件参考(一)

重要说明:本博已迁移到 石佳劼的博客!!


不了解DSOframer的朋友,可以先参考DSOframer 的简单介绍和资源整理


事件说明:事件需要注意格式。需要用<script>标签来声明事件。其中属性的含义为:

               Language:”语言类型”
               For:”控件的id”
               Event:”事件的名称”
注意事件执行体是在<script></script>标签之间,由于事件是由系统来回调的,即事件名称中的参数只需要写变量名即可,不能写常量。例如:
<span style="font-family:Microsoft YaHei;font-size:14px;"><script language=”Jscript” for=”TANGER_OCX” event=”OnDocumentOpened(file,doc)”>
     //这里就是事件体,执行用户需要执行的方法
</script></span>

常用的事件有下面4个:
1、 OnDocumentOpened
OnDocumentOpened( [in] BSTR File, [in] IDispatch* Document);
该事件在文档打开完毕时执行。第一个参数是文档路径或者URL,第二个参数是文档的自动化接口。比如,对于一个Word文档,第二个参数是一个Word.Document对象。

2、 OnDocumentClosed
OnDocumentClosed();
该事件在文档关闭之后执行。

3、 OnDocActivated
OnDocActivated([in] boolean IsActivated);
当控件被激活或者不激活时触发此事件。比如,切换窗口将会出发此事件。

4、 OnScreenModeChanged
OnScreenModeChanged(BOOL IsFullScreenMode)
此事件当控件在全屏/非全屏状态切换时被触发。参数说明了此时控件是处于全屏还是非全屏编辑模式。

注意:事件代码应直接写在HTML页面中,用Javascript的document.write()方法添加事件代码写到页面中,会导致事件无效。

让我们用个例子来了解以上4个事件怎么用:
<span style="font-family:Microsoft YaHei;font-size:14px;"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript">
        
        //全局变量
        var oframe;
        var isOpened = false;

        //初始化oframe对象
        function InitEvent() {
            oframe = document.getElementById("oframe");
            //alert("请您将IE的文档模式调成IE7标准模式");
        }

        //检查是否打开文档
        function CheckFileOpened() {
            if (!isOpened){
                alert("You do not have a document open.");
                return false;
            }else {
                return true;
            }
        }

        //检查是否安装控件
        function CheckControlInstall() {
            if (typeof (oframe) == 'undefined'){
                alert("You must install dsoframe control first.");
                return false;
            }else {
                return true;
            }
        }
        
        //新建Word文档
        function AddNewWord() {
            if (CheckControlInstall()){
                oframe.CreateNew("Word.Document");
            }
        }

        //关闭Word文档
        function CloseWord() {
            if (CheckFileOpened()) {
                oframe.close();
            }
        }

        //dsoframe事件
        function OnDocumentOpened(str, obj) {
            isOpened = true;
            alert("触发了dsoframe的OnDocumentOpened事件!");
        }
        
        function OnDocumentClosed() {
            isOpened = false;
            alert("触发了dsoframe的OnDocumentClosed事件!");
        }

    </script>
</head>
<body οnlοad="InitEvent()">
    <div>
        <table width="100%">
            <tr>
                <td width="130px" style="vertical-align: top;">
                    <input type="button" value="新建Word文档" οnclick="AddNewWord()" />
                    <input type="button" value="关闭Word文档" οnclick="CloseWord()" />
                </td>
                <td>
                    <object classid="clsid:00460182-9E5E-11d5-B7C8-B8269041DD57" id="oframe" width="100%"
                        height="500px" codebase="ActiveX/DSOframer/DSOframer.CAB#version=1,0,0,0">
                        <param name="BorderStyle" value="1" />
                        <param name="TitlebarColor" value="52479" />
                        <param name="TitlebarTextColor" value="0" />
                        <param name="Menubar" value="1" />
                        <param name="Titlebar" value="0" />
                    </object>
                    <div style="display: none">
                        <!-- dsoframe事件 开始 -->
                        <script type="text/javascript" language="jscript" for="oframe" event="OnDocumentOpened(str,obj)">
                            OnDocumentOpened(str,obj);
                        </script>
                        <script type="text/javascript" language="jscript" for="oframe" event="OnDocumentClosed()">
                            OnDocumentClosed();
                        </script>
                        <!-- dsoframe事件 结束 -->
                    </div>
                </td>
            </tr>
        </table>
    </div>
</body>
</html></span>

欢迎来到 石佳劼的博客,如有疑问,请在「原文」评论区 留言,我会尽量为您解答。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Qt中连接`DSOFramer`控件的事件可以通过以下步骤实现: 1. 打开Qt的设计视图,将`DSOFramer`控件添加到你的窗口中。 2. 在Qt的信号与槽编辑器中,选择`DSOFramer`控件,并在右侧的属性编辑器中找到`Signals`部分。 3. 在`Signals`部分中,找到你想要连接的事件(例如`OnEnterEditMode`或`OnExitEditMode`),双击该事件。 4. 在弹出的`Connect Slot`对话框中,选择你要连接的槽函数,并单击`OK`按钮。 5. 在你的窗口类中实现相应的槽函数,用于处理`DSOFramer`控件触发的事件。 以下是一个示例代码,演示如何连接`DSOFramer`控件的`OnEnterEditMode`事件: ``` // MyWindow.h class MyWindow : public QMainWindow { Q_OBJECT public: explicit MyWindow(QWidget *parent = nullptr); private slots: void handleEnterEditMode(); private: Ui::MyWindow *ui; }; // MyWindow.cpp MyWindow::MyWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MyWindow) { ui->setupUi(this); // Connect DSOFramerCtl's OnEnterEditMode event to handleEnterEditMode slot connect(ui->DSOFramerCtl, SIGNAL(OnEnterEditMode()), this, SLOT(handleEnterEditMode())); } void MyWindow::handleEnterEditMode() { QMessageBox::information(this, "Excel Editing", "Excel is currently editing a cell"); } ``` 在这个示例中,`MyWindow`类连接了`DSOFramerCtl`控件的`OnEnterEditMode`事件到`handleEnterEditMode`槽函数,并在槽函数中弹出一个消息框。你可以根据需要修改这个示例来连接其他的`DSOFramer`事件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值