請教ACTIVEX Form物件使用html將參數傳入的方式 |
答題得分者是:Eskimo
|
MilesWamg
一般會員 發表:18 回覆:37 積分:11 註冊:2003-02-07 發送簡訊給我 |
請教各位先進有關請教ACTIVEX Form物件使用html將參數傳入的方式,
參考
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=22699
中的寫法,這是delphi的版本,但bcb的實作方式好像不同,我試了一段時間一值無法將參數傳入activexform中,我寫了一個小小的範例,是一個網頁上的小時鍾,而html的原始檔如下
html> <body> testing <OBJECT ID="ActiveFormProj1" WIDTH="460" HEIGHT="460" CLASSID="CLSID:7D0BEB52-3B67-42BF-AD16-EC089A9298E6"> </OBJECT></body> </html>根據書本與網路上的資料但是收集的這部分實作於bcb資料不齊全,所以於新增的參數為IPAddr,如欲於上述的傳入activexform設定如下 STDMETHODIMP TActiveFormXImpl::set_IPAddr(BSTR Param1) { try { const DISPID dispid = 16; if (FireOnRequestEdit(dispid) == S_FALSE) return S_FALSE; m_VclCtl->StaticText2->Caption ="IP=" AnsiString(Value); FireOnChanged(dispid); } catch(Exception &e) { return Error(e.Message.c_str(), IID_IActiveFormX); } return S_OK; };我將原始碼貼在 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=55790 請問我哪邊要修正,或設定,謝謝! |
Eskimo
一般會員 發表:0 回覆:2 積分:5 註冊:2004-09-10 發送簡訊給我 |
針對您的原始碼解答:
1. 先將您新增的 property (name=IPAddr) 的 Flags 設定為 Bindable, 並按下refresh
2. 在您的 ActiveFormImpl1.h 中, 手動加上黑體字的部份:
a)
class ATL_NO_VTABLE TActiveFormXImpl:
VCLCONTROL_IMPL(TActiveFormXImpl, ActiveFormX, TActiveFormX, IActiveFormX, DIID_IActiveFormXEvents),
public IPersistPropertyBagImpl< TActiveFormXImpl >
{ /* 省略 */}
請注意 VCLCONTROL_IMPL()後的逗點需加上 b)
BEGIN_COM_MAP(TActiveFormXImpl)
VCL_CONTROL_COM_INTERFACE_ENTRIES(IActiveFormX)
COM_INTERFACE_ENTRY_IMPL( IPersistPropertyBag )
END_COM_MAP() c)
BEGIN_PROPERTY_MAP(TActiveFormXImpl)
// PROP_PAGE(CLSID_ActiveFormXPage)
PROP_ENTRY( "IPAddr", 16, CLSID_ActiveFormX)
END_PROPERTY_MAP()
註: PROP_ENTRY的參數為 (PROPERTY_NAME, PROPERTY_ID, ACTIVE_FORM_CLSID) 最後, 因您的專案中缺 websnap.bpi, 所以我沒辦法 build 出來測試.
另外, 我想請問, 您的程式在 build 出來後, 能在 IE 上看到 ActiveForm 嗎?
因為據我所知, 當project options設定成使用 runtime packages 及 dynamic RTL時, 在 IE 上會看不到 ActiveForm, 是不是需要什麼設定才能像您一樣使用這2項options?
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |