利用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方法的聲明加進去。
1 procedure OnUploadPic; dispid 209;
然后HTML頁面中建立這個事件函數,注意event字段寫入事件名,for字段寫入你給OCX取的名字,也就<object>把OCX包進去的時候取的name值:
1 <script language="javascript" event="OnUploadPic" for="OcxName"> 2 alert("hello Delphi!"); 3 </script>
然后在Delphi中需要調用這個函數的地方,加入代碼:
1 if FEvents <> nil then FEvents.OnUploadPic;
搞定。
