OCX調用頁面上JavaScript的方法(解決FEvents=nil的問題)

來源:互聯網
上載者:User

      利用Delphi的ActiveForm,可以很方便地開發出可以嵌入IE的ActiveX組件,無需知道太多幕後的COM知識。如何使得OCX可以很方便地調用Web上的JavaScript函數呢,研究了一個下午,使用ActvieForm的Events介面搞定。說穿了不值錢,只要一句代碼就搞定,但是Google半天,琢磨了N久,看來還是基本功不紮實。

      首先在ActiveForm的項目中找到ridl檔案,開啟它,選擇ActiveForm的Events介面,點擊右鍵,建立一個新的方法,方法名為我需要調用javascript的函數名。這裡我要調用一個js的上傳圖片指令碼,所以將其命名為“OnUploadPic”。得到這個事件的ID,這裡是209。

 

 

    來到xxx_TLB.pas檔案中(xxx為你的項目名),在ActiveForm中Events介面中將這個OnUploadPic方法的聲明加進去。procedure OnUploadPic; dispid 209;

 

    然後HTML頁面中建立這個事件函數,注意event欄位寫入事件名,for欄位寫入你給OCX取的名字,也就<object>把OCX包進去的時候取的name值:

<script language="javascript" event="OnUploadPic" for="OcxName"><br /> alert("hello Delphi!");</p><p> </script> </p><p>

然後在Delphi中需要調用這個函數的地方,加入代碼:

if FEvents <> nil then FEvents.OnUploadPic;

 

 

=========================================================================================
以上摘自http://www.acwind.net/blog/?p=658
但是如果不注意js部分,會出現FEvents=nil的問題

注意:

<OBJECT id="testid"<br /> classid="clsid:62949CA7-D723-4D98-AD9A-0DFEBCE5C14F"<br /> codebase="http://LENOVO-NB/ActiveFormProj1.ocx#version=1,0,0,0"<br /> width=350<br /> height=250<br /> align=center<br /> hspace=0<br /> vspace=0<br />><br /></OBJECT><br /><script language="javascript" event="OnUploadPic" for="testid"><br /> alert("Hello Delphi!");<br /></script><br />
for="testid",for要用Object對象中的id,不能用ocx名稱ActiveFormProj1,否則就會出現FEvents=nil。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.