电竞比分网-中国电竞赛事及体育赛事平台

分享

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

 posondlq 2012-07-12

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

      首先在ActiveForm的項目中找到ridl文件,打開它,選擇ActiveForm的Events接口,點擊右鍵,建立一個新的方法,方法名為我需要調(diào)用javascript的函數(shù)名。這里我要調(diào)用一個js的上傳圖片腳本,所以將其命名為“OnUploadPic”。得到這個事件的ID,這里是209。

 

 

    來到xxx_TLB.pas文件中(xxx為你的項目名),在ActiveForm中Events接口中將這個OnUploadPic方法的聲明加進去。

  1. procedure OnUploadPic; dispid 209;   

 

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

  1. <script language="javascript" event="OnUploadPic" for="OcxName">  
  2.     alert("hello Delphi!");  
  3.   
  4. </script>   

然后在Delphi中需要調(diào)用這個函數(shù)的地方,加入代碼:

  1. if FEvents <> nil then FEvents.OnUploadPic;   

 

 

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


注意:

  1. <OBJECT   id="testid"  
  2.    classid="clsid:62949CA7-D723-4D98-AD9A-0DFEBCE5C14F"  
  3.    codebase="http://LENOVO-NB/ActiveFormProj1.ocx#version=1,0,0,0"  
  4.    width=350  
  5.    height=250  
  6.    align=center  
  7.    hspace=0  
  8.    vspace=0  
  9. >  
  10. </OBJECT>  
  11. <script language="javascript" event="OnUploadPic" for="testid">  
  12.     alert("Hello Delphi!");  
  13. </script>  

for="testid",for要用Object對象中的id,不能用ocx名稱ActiveFormProj1,否則就會出現(xiàn)FEvents=nil。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多