全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1754
推到 Plurk!
推到 Facebook!

在Delphi中如何做到VB中的ActiveX控制項

答題得分者是:sryang
cliffdean
一般會員


發表:9
回覆:14
積分:4
註冊:2004-12-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-28 15:25:50 IP:211.75.xxx.xxx 未訂閱
請教各位先進: 我在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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-30 23:32:06 IP:219.81.xxx.xxx 未訂閱
請用 widestring 加油喔,喵~
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
cliffdean
一般會員


發表:9
回覆:14
積分:4
註冊:2004-12-07

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-08-08 08:51:35 IP:211.75.xxx.xxx 未訂閱
sryang 大大: 我改用WideString結果宣告的時候就會出問題耶! 我原本上面宣告是function Get_returnData: PChar;safecall; 改成WideString就無法通過了,煩請大大再幫幫忙!
sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-08-09 18:08:48 IP:210.243.xxx.xxx 未訂閱
可否貼上完整程式碼,以利問題查找 包括 網頁 部分跟 Delphi 部分 加油喔,喵~
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
cliffdean
一般會員


發表:9
回覆:14
積分:4
註冊:2004-12-07

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-08-11 17:09:23 IP:211.75.xxx.xxx 未訂閱
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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-08-13 10:19:23 IP:221.226.xxx.xxx 未訂閱
步驟如下:    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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-08-15 09:11:31 IP:211.75.xxx.xxx 未訂閱
謝謝 sryang 大大: 辛苦大大做的這麼詳細,但是有一點小問題 我做到第9步的時候,因為沒有辦法選擇 Web Deploy Options選項, 因此我就按照網頁上的方式,先新增一個Active Form, 新增完後Type Liberary後的結果如下 然後我再把屬於Active Form的全部刪除如下圖 然後就依照大大後面的敘述設定Web Deploy Options 但是卻出現錯誤訊息如下圖 我確定我現在的網際網路設定中有允許所有的ActiveX運作如下: 不知道是什麼問題?
cliffdean
一般會員


發表:9
回覆:14
積分:4
註冊:2004-12-07

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-08-15 09:29:40 IP:211.75.xxx.xxx 未訂閱
我剛剛試了一下,如果改用Active Form來做, 就可以傳入傳出,但是還有一個小小的問題, 就是每一次重整他都會要求重新下載ActiveX, 不過sryang大大已經解決了變數傳入傳出的問題, 在此獻上最高的敬意!
sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-08-15 22:18:22 IP:221.226.xxx.xxx 未訂閱
引言: 我剛剛試了一下,如果改用Active Form來做, 就可以傳入傳出,但是還有一個小小的問題, 就是每一次重整他都會要求重新下載ActiveX, 不過sryang大大已經解決了變數傳入傳出的問題, 在此獻上最高的敬意!
1. ActiveX Form 有他自己需要用的類別與介面,不要隨意刪除 我示範用的是 Automation Object,裡面一開始只有一個空的介面 2. 重新下載 ActiveX 的問題,可以在網頁中 CODEBASE 這一行 把 #version=1,0,0,1 部分刪除 3. IE 安全性選項的問題,只要把 CODEBASE 這一行寫到的網站 設定成「信任的網站」就好了 加油喔,喵~
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
系統時間:2024-05-02 10:49:23
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!