在Delphi中如何做到VB中的ActiveX控制項 |
答題得分者是:sryang
|
cliffdean
一般會員 發表:9 回覆:14 積分:4 註冊:2004-12-07 發送簡訊給我 |
請教各位先進:
我在VB中可以設計出ActiveX控制項(使用者控制項),
在網頁中可以透過Script傳入傳出變數例如
ActiveX控制項裡面
//以下為VB中的程式片段
function StrAdd(s1 as string,s2 as string) as string Dim rtnStr as string rtnStr = s1 & s2 end function在網頁中可以這樣呼叫 <OBJECT id="myObj" name="myObj" CLASSID="CLSID:4CD88709-13FF-4E59-0115-70859D5C63EF" CODEBASE="http://192.168.1.131/activex/myObj.cab#version=1,0,0,1"> </OBJECT> <input type='button' value='讀取資料' > function Test(){ alert(myObj.StrAdd('str','1234'); }執行該網頁按鈕之後會秀出 str1234, 那請問一下如果要用Delphi改寫VB的部分要怎麼做, 我是了很久,在傳入傳出參數的時候會有問題, 我確定是用pchar來傳入傳出但是真的不行, 是不是可以煩請大大指導一下! |
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
|
cliffdean
一般會員 發表:9 回覆:14 積分:4 註冊:2004-12-07 發送簡訊給我 |
|
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
|
cliffdean
一般會員 發表:9 回覆:14 積分:4 註冊:2004-12-07 發送簡訊給我 |
sryang 大大:
其實我根本沒有寫什麼程式,我只是光試資料傳入傳出就有問題了,
我希望在網頁上
<OBJECT id="myObj" name="myObj" CLASSID="CLSID:4CD88709-13FF-4E59-0115-70859D5C63EF" CODEBASE="http://192.168.1.131/activex/myObj.cab#version=1,0,0,1"> </OBJECT> <input type='button' value='讀取資料' > function Test(){ alert(myObj.StrAdd('str','1234'); }Delphi的部分也很簡單只是去接收網頁傳進來的兩個變數'str'跟'1234', 直接回傳一個字串如'str1234',讓網頁可以alert出來, 現在就是Delphi的部分不知道怎麼做,但是在VB可以做的到, 是否可以示範一個簡單的範例,要怎麼傳入傳出變數。 |
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
步驟如下: 1. New ActiveX Library
2. New Automation Object
3. 輸入 class 名稱,按下 OK
4. 修改在 Type Library 視窗中顯示出來的參數類型,預設為 IDL 類型,要改為顯示 Pascal 類型,可至 Environment Options --> Type Library --> Language 中,改成 Pascal。
5. 新增一個 method : 點選到棒棒糖(Interface)後,按 New Method 按鈕,並輸入 Method 名稱
6. 新增這個 method 的參數,完畢之後按下 refresh implementation 按鈕
7. 撰寫這個 method 的內容,我這裡寫的是很簡單的
Result := A + B; 8. 存檔 9. 從 Project --> Web Deploy Options 調整測試網頁發佈的選項
10. Project --> Web Deploy,這時會 compile 之後將檔案發佈到指定位置。如果在 9 中勾選了 Use CAB file compression 選項,則會出現 .CAB 的檔案
11. 這樣在網頁中就可以呼叫了
<HTML> <OBJECT id="myObj" name="myObj" CLASSID="CLSID:3830D551-032F-48FF-A716-C1902525F977" CODEBASE="http://localhost/test/project1.cab"> </OBJECT> <input type='button' value='讀取資料' > function Test(){ alert(myObj.Method1('str','1234')); } </HTML></pre> 其中的 CLASSID 部分,從這裡取得: 這個範例用的是 Automation Object,是屬於不可視的物件,所以在發佈出去的網頁中看不到 Object 的宣告,要自己加上。如果用的是 ActiveX Form 或 ActiveX Control 的話,就可以用發佈出去的網頁直接修改測試 ActiveX Form 顧名思義,就是以 ActiveX 方式包裝出的 Form 類別 而 ActiveX Control 就是以 ActiveX 方式包裝出的 Control 或其衍生類別 這些都可以自己試試看。 12. 來試試看 每次修改程式之後,都需要重新發佈,測試網頁也會重新建立,Delphi 會一一詢問檔案是否要蓋掉 加油喔,喵~ 發表人 - sryang 於 2005/08/13 10:25:08
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/ |
cliffdean
一般會員 發表:9 回覆:14 積分:4 註冊:2004-12-07 發送簡訊給我 |
謝謝 sryang 大大:
辛苦大大做的這麼詳細,但是有一點小問題
我做到第9步的時候,因為沒有辦法選擇 Web Deploy Options選項,
因此我就按照網頁上的方式,先新增一個Active Form,
新增完後Type Liberary後的結果如下
然後我再把屬於Active Form的全部刪除如下圖
然後就依照大大後面的敘述設定Web Deploy Options
但是卻出現錯誤訊息如下圖
我確定我現在的網際網路設定中有允許所有的ActiveX運作如下:
不知道是什麼問題?
|
cliffdean
一般會員 發表:9 回覆:14 積分:4 註冊:2004-12-07 發送簡訊給我 |
|
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
引言: 我剛剛試了一下,如果改用Active Form來做, 就可以傳入傳出,但是還有一個小小的問題, 就是每一次重整他都會要求重新下載ActiveX, 不過sryang大大已經解決了變數傳入傳出的問題, 在此獻上最高的敬意!1. ActiveX Form 有他自己需要用的類別與介面,不要隨意刪除 我示範用的是 Automation Object,裡面一開始只有一個空的介面 2. 重新下載 ActiveX 的問題,可以在網頁中 CODEBASE 這一行 把 #version=1,0,0,1 部分刪除 3. IE 安全性選項的問題,只要把 CODEBASE 這一行寫到的網站 設定成「信任的網站」就好了 加油喔,喵~
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |