HTML與ActiveForm間的參數傳遞 |
尚未結案
|
antony
一般會員 發表:7 回覆:8 積分:3 註冊:2002-07-18 發送簡訊給我 |
我利用ActiveForm撰寫了一個OCX檔,然後利用下列方式在HTML中
設定Active Form的Color屬性,讓User讀取網頁時出現不同的色彩
,如果我想自己加上一個TEST的屬性,來作其他參數傳遞不知是否可
行? 請問是否有人這樣使用過. classid="clsid:FC5F3xxx-2xxx-4xx4-Bxxx-3xxxxx9xxxxx"
codebase="http://www.xxx.xxx.tw/AAAA.cab#version=1,0,0,54"
width=380
height=298 param name="Color" value="129"
param name="TEST" value="參數傳遞" <=自行編輯的TEST屬性,用來傳遞資料 發表人 -
|
mi86018
一般會員 發表:20 回覆:39 積分:21 註冊:2003-11-17 發送簡訊給我 |
雖然這個問題已經過了一年多...但是剛好知道解答...就寫出來囉...
希望對有需要的人有幫助! 寫好的Activex ocx 在HTML引用的程式碼如下:
<OBJECT " classid="clsid:4BBF9074-8799-41D9-B4E8-BF93C4372E6B" codebase="./PrintBarcodeProj1.inf" width=117 height=47 align=center hspace=0 vspace=0 ><font color=red>"> </OBJECT></font>紅色這行..就是要從Html要傳入ocx的參數。 而在Delphi中的ActiveX Form中點選 View -> Type Library 然後點選有個像紅色棒棒糖的Interface然後點滑鼠右鍵,New一個新的property,如圖一。 圖一 幫新的property去個名字,及資料型態,此property即為你要從Html傳進來的參數。取好名字之後Delphi會自動將Get和Put兩個Property設為同一名字,如下圖二。 圖二 新增完之後記得按下Type Library中裡那一排工具列裡面的Refresh。按下之後,在ActiveX form的程式碼就會多出兩個函式,如下: function Get_BarcodeStr: WideString; safecall; procedure Set_BarcodeStr(const Value: WideString); safecall;在這兩個函式裡面,要加上下面的程式碼,當然也可以加入一些你自己需要的程式。 function TActiveXForm1.Get_BarcodeStr: WideString; begin Result := WideString(BarcodeStr); end; procedure TActiveXForm1.Set_BarcodeStr(const Value: WideString); begin BarcodeStr := Value; end;之後,就可以在你自己寫的其他函式裡面用的這個從Html傳進來的參數了,用法如下: 例如我在Timer裡面用道: procedure TActiveXForm1.Timer1Timer(Sender: TObject); var str:String; begin Timer1.Enabled:=False; str := get_BarcodeStr; if (length(str) = 0) then exit else showmessage(str); end;將這個form包成ocx,Deploy之後,在Html語法記得加上文章最上面的那行 ">這樣這個網頁就能將參數傳進這個ocx了!! 有不懂的再問我喔~ 我是頭號「問題」份子... |
00156
高階會員 發表:45 回覆:195 積分:112 註冊:2002-06-01 發送簡訊給我 |
|
mi86018
一般會員 發表:20 回覆:39 積分:21 註冊:2003-11-17 發送簡訊給我 |
引言: 謝謝你提供如此詳盡的說明。 不過我試了一下,但Compile時出現錯誤... Undeclared identifier: 'BarCodeStr' 是不是有所遺漏?還是需要做什麼樣的設定?不好意思,沒有說清楚。 還要在多宣告一個變數,例如我宣告在Private中: type TActiveFormX = class(TActiveForm, IActiveFormX) Button1: TButton; procedure Button1Click(Sender: TObject); private BarCodeStr:WideString; { Private declarations } FEvents: IActiveFormXEvents; procedure ActivateEvent(Sender: TObject); procedure ClickEvent(Sender: TObject); procedure CreateEvent(Sender: TObject);這樣Complie就可以了... 我是頭號「問題」份子... |
star
初階會員 發表:37 回覆:93 積分:36 註冊:2002-07-18 發送簡訊給我 |
|
star
初階會員 發表:37 回覆:93 積分:36 註冊:2002-07-18 發送簡訊給我 |
Hi, 我改在ActiveFormCreate中寫:
str := get_BarcodeStr;
showmessage(str);
無論傳什麼都是空白,我是在想:當呼叫get_BarcodeStr這個function時
BarcodeStr這個private變數, 不是空白嗎, 在何時會給值?
另外, 我不知道在IE這樣輸入是否正確:
http://xxx.xxx.xxx/index.html?BarcodeStr=1234 發表人 - star 於 2004/02/12 15:09:06
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
star
初階會員 發表:37 回覆:93 積分:36 註冊:2002-07-18 發送簡訊給我 |
引言: 插個花, 對照 %=sendstr% 這一句 您在網頁中有 Request sendstr 這個變數嗎? --- 每個人都是一本書. --<-<-<@ 發表人 - hagar 於 2004/02/12 17:28:23網頁中我是照這樣寫的 〈param name="BarcodeStr" value="〈%=sendstr%〉"〉 您說的要 Request 變數, 是什麼意思? 不好意思, 網頁方面我實在太爛了. 還請不吝指教! %=sendstr% -->是否須要透過JavaScript將值傳給後端才行? 發表人 - star 於 2004/02/13 13:36:22 發表人 - star 於 2004/02/13 16:15:40 |
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
試試 IE 的網址輸入改這樣:
http://xxx.xxx.xxx/index.html?sendstr=1234
然後, .html 大概像這樣
<html>
<%
sendstr = Request("sendStr") // 這行是把 IE 網址輸入中所傳來的 sendstr 的值指定給 sendstr 變數
%>
...
<OBJECT ...>
...
<param name="BarcodeStr" value="<%=sendstr%>">
</OBJECT> ---
每個人都是一本書. --<-<-<@
|
star
初階會員 發表:37 回覆:93 積分:36 註冊:2002-07-18 發送簡訊給我 |
|
Ktop_Robot
站務副站長 發表:0 回覆:3511 積分:0 註冊:2007-04-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |