最近做了一個(gè)ocx,,在網(wǎng)上查了許多東西,我自己簡(jiǎn)單也做出來(lái)了,,在這里總結(jié)下,。
1、首先,,file-new-other-activex,,我選擇了active form,ok后,,
2,、new activex name 里填寫(xiě)控件名稱(chēng),也就是最終單元里對(duì)象的名字。
3,、可以更改下面unit 和 project name 名字,,但是在這里要注意,project名字
不能和上面active name相同,,會(huì)報(bào)錯(cuò),!然后ok。
4,、顯示窗體和我們一般的form沒(méi)什么區(qū)別,,下來(lái)該加接口了。
I,、當(dāng)我們做接口函數(shù)到時(shí)候也需要一些其他的非接口函數(shù)的functions,,所以在
文件前面如同一般的函數(shù)一樣申明,然后在后面寫(xiě)實(shí)現(xiàn)部分,。(前面寫(xiě)完申請(qǐng)后
,,光標(biāo)放在函數(shù)名字上,按住ctrl+shift + c,,在后面就會(huì)自動(dòng)形成實(shí)現(xiàn)函數(shù)框
架)
II,、加接口函數(shù):在form窗體上,選擇 edit-add to interface,,在里面申明函
數(shù)頭,。如 funcion printruler(sjjs :double):double; 點(diǎn)擊Ok后,你就會(huì)在
unit里看到申請(qǐng)的函數(shù)申明及在后面的實(shí)現(xiàn)部分的框架,。
如:
需要幾個(gè)接口,,你就加幾個(gè)函數(shù)說(shuō)明。
當(dāng)然,,加接口還有其他方法,,如 也可以在view - type library里新建一個(gè)接口
method,我現(xiàn)在只用到這些,,所以暫時(shí)只能寫(xiě)這么膚淺,。
具體步驟如下:
I、新建一個(gè)method,,然后命名,,如圖所示:
II、參數(shù)設(shè)置,,這里的數(shù)據(jù)類(lèi)型和delphi基本的數(shù)據(jù)類(lèi)型有別,,一般的字符串定
義為bstr,相當(dāng)于widestring類(lèi)型,。
LPSTR:一個(gè)32位指向字符串的指針,,相當(dāng)于char *
LPCSTR:一個(gè)32位指向字符串常量的指針,,相當(dāng)于const char *;
LPWSTR:一個(gè)32位指向Unicode字符串指針,相當(dāng)于wchar_t *
LPCWSTR:一個(gè)32位指向Unicode字符串常量指針,,相當(dāng)于const wchar_t *
(我暫時(shí)知識(shí)面知只到這里,,學(xué)習(xí)中。,。,。)
III、如果函數(shù)有返回值,,則再定義一個(gè)參數(shù)“value”,, tpe 設(shè)定為一個(gè)指針型
,即帶“*”的類(lèi)型(如果里面沒(méi)有你要的帶*的類(lèi)型,,你可以手工加個(gè)*)
modifier設(shè)定為如圖所示,,這樣才會(huì)有返回值。
還要注意,,參數(shù)的順序一定要注意,,在這里設(shè)定好了之后,在函數(shù)體內(nèi)不可自行
亂改,。
5,、函數(shù)功能完成后,(假如剛才的控件工程我名字我按默認(rèn)的
‘ActiveFormProj1’),,那么在project-buildActiveFormProj1,,編譯完后,在
程序根目錄下就生成了‘ActiveFormProj1.ocx’.
這里需要注意的是,,這是個(gè)控件工程,,不能像一般的工程一樣去run,會(huì)報(bào)錯(cuò),!
這樣一個(gè)控件就做好了,。
附加:
如果你要測(cè)試你的控件功能,你可以自己把自己的控件加載進(jìn)來(lái),,然后調(diào)著
試一下,,我是這樣子做的,當(dāng)然我看高手還有其他很好的辦法,。
加載控件的辦法:
I、component-import activex control -add (project - import type
library-add也可以,,后面的步驟一致),,下面的palette page 你可以根據(jù)你的需
要選擇,一般都在activex面板下,。類(lèi)名也可以更改,,建議在做控件的時(shí)候就把名
字一次建好,,用起來(lái)一看簡(jiǎn)單明了。
II,、然后install,,如果已經(jīng)加載過(guò)一次,會(huì)提示你要不要replace it,,ok后,,選
擇包窗體,
你可以選擇你要加載進(jìn)去的包文件(*.dpk),ok后,,問(wèn)是否要rebuild包,,
yes后,出現(xiàn)類(lèi)似的提示,,
就說(shuō)明加載成功,。
你可以在你才選擇的面板里,去查看是否有才加的控件按鈕,,如activex面板
下,,如圖所示。
加載成功后,,就可以用自己的控件了,。
如果加載失敗,原因 是多方面的,,卸載控件,,重新加載。
卸載控件:
I,、component-install packages-borland user components,,可以打開(kāi)
components按鈕 看一下有沒(méi)有你加的控件在里面,
II,、然后點(diǎn)擊edit,,彈出如下窗口,yes后,,在彈出的窗體里選中你的控件名,,
remove后,從包里刪除掉那個(gè)控件的信息,。
III,、回到剛才的窗口(component-install packages),remove掉那個(gè)包信息,,yes后,,就完成了卸載。
IV,、但是,,卸載了那個(gè)不對(duì)控件后,,有時(shí)需要把之前的包再重新加進(jìn)來(lái),
加包方法很簡(jiǎn)單,,
打開(kāi)file-open,,選擇dpk文件,加進(jìn)來(lái),,點(diǎn)擊install就可以了,。
粗略的寫(xiě)寫(xiě),大家分享下,!