首先要弄明白你要寫的OCX是用在客戶端還是用在服務器端
假如用在客戶端:
1、創建
打開delphi 7,選擇菜單"new"->"other"->"activex"->"active form"->輸入項目名稱, 系統自動給你創建了3個文件,一個是項目文件,一個是form的單元文件,還有一個后綴帶TLB 的文件。這三個文件中的你只需要更改form的單元文件,項目文件一般不需要寫什么,TLB文件 有系統自動維護。
2、增加接口函數
所謂接口函數就是調用OCX的程序可以直接調用的函數,如果你要寫的函數不提供 外部函數可以按常規聲明就可以。但要聲明接口函數則必須按步驟聲明,
①選擇form單位文件(一定要選form文件才可以,否則相應的菜單都是不可用的),然后點擊"view"->"Type Library",彈出一個對話框,
②然后選擇左側樹狀圖第一個節點——鼠標右鍵——New——Method
③修改方法名稱,如圖所示:
④切換到"Parameters"標簽,輸入方法參數。
注意:如果參數是string類型,則選擇BSTR。如果參數是輸入參數,則modifier選擇in,
如果是輸出參數,則Modifier選out,如果是作為函數返回值,則Modifier選out和refVal
輸出參數和函數返回值,Type必須為指針類型 (即:類型 *)
⑤點工具欄的刷新按鈕,就會自動更新單元文件代碼
如下圖,自動生成了function LSBH_LOGIN(const WIN_NO, WORK_NO: WideString): WideString;
safecall;
⑥在自動生成的函數體中寫實現代碼即可。
3、ocx的注冊和卸載。
注冊:regsvr32 usQueueOcx.ocx
卸載:regsvr32 /u usQueueOcx.ocx
4、編寫html調用ocx (示范文件:testQueue.html)
建議使用Editplus來編寫html。
①在Editplus——文件——新建——html網頁。
②點工具欄上的對象按鈕,選擇注冊的ocx對象,則html中自動插入對象。
也可以手動插入object對象,代碼如下:
<object id="TusQueue" width="0" height="0" classid="CLSID:2FE52D49-D1E2-44C4-AE30-D35BAB691F21"></object> |
說明:對象id一般命名和ocx的類名稱一致,classid的值可以在ocx代碼中搜索classid得到。如下圖
5、調試OCX。
我是用html調試的,所以可用在delphi種配置run的參數 "run"->"parametes",彈出一對話框,在"host application"中輸入C:\Program Files\Internet Explorer\IEXPLORE.EXE,
在"parametes"中 html文件路徑 ,點【OK】按鈕。如下圖
這樣就可以調試delphi代碼了。F9運行OCX代碼,自動啟動parametes設定的瀏覽器打開調試html,可以設置斷點來調試了。
注意:如果是IE8,則會出現無法進入斷點的情況。
解決方法: 修改注冊表
regedit→ HKEY_LOCAL_MACHINE →SOFTWARE→Microsoft → Internet Explorer→Main。在Main里新建一個DWORD類型名為TabProcGrowth值為0。
另一種解決方法:delphi7的ocx對應的tlb文件頂部有一個{$VARPROPSETTER ON},把這個開關去掉重新編譯注冊就可以了
源碼下載:http://download.csdn.net/detail/tc310/9114805