activeform如何取得从IE传来的参数(倾囊所有)(45分)

I

isabel

Unregistered / Unconfirmed
GUEST, unregistred user!
请问在用delphi编写activeform时,如何
从internet explore向activeform传递参数?
我用delphi编testactiveform.ocx作为一个
服务器程序,

其中在itestactiveform=interface(IDispatch)
中定义一个属性value

delphi自动在TLB文件中生成
property value: WideString read Get_value write Set_value;

在testactiveform.pas中生成
function TtestActiveFormX.Get_value: WideString;
begin

end;

procedure TtestActiveFormX.Set_value(const Value: WideString);
begin

end;
我不知道用这两个过程或函数如何读入客户程序传递的参数。

同时也不知道在HTML程序中如何向Itestactiveform接口传递参数。
因为我无法在HTML程序里定义一个Itestactiveform,并给他的属性
付值。

请大家指点一二,不胜感激。
谢谢!
 
Y

yysun

Unregistered / Unconfirmed
GUEST, unregistred user!
用IPersistPropertyBag接口
TActiveFormX = class(TActiveForm, IActiveFormX, IPersistPropertyBag)

在protected节中,增加实现IPersistPropertyBag接口的方法如下:

function IPersistPropertyBag.Load = PersistPropertyBagLoad;
function IPersistPropertyBag.Save = PersistPropertyBagSave;
function IPersistPropertyBag.InitNew = PersistPropertyBagInitNew;
function IPersistPropertyBag.GetClassID = PersistPropertyBagGetClassID;
function PersistPropertyBagLoad(const pPropBag: IPropertyBag;
const pErrorLog: IErrorLog): HResult
stdcall;
function PersistPropertyBagSave(const pPropBag: IPropertyBag
fClearDirty: BOOL;
fSaveAllProperties: BOOL): HResult
stdcall;
function PersistPropertyBagGetClassID(out classID: TCLSID): HResult
stdcall;
function PersistPropertyBagInitNew: HResult
stdcall;

其中,PersistPropertyBagLoad、PersistPropertyBagSave、PersistPropertyBagGetClassID和PersistPropertyBagInitNew的算法,如下。

function TActiveFormX.PersistPropertyBagLoad(const pPropBag:
IPropertyBag
const pErrorLog:IErrorLog):HResult
stdcall;
var v: OleVariant;
begin
if pPropBag.Read( 'paramName', v, pErrorLog) = S_OK then begin
// v 就是从 html 读出的值
end;
Result := S_OK;
end;

function TActiveFormX.PersistPropertyBagSave(const pPropBag:
IPropertyBag
fClearDirty: BOOL
fSaveAllProperties: BOOL): HResult
stdcall;
begin
Result := S_OK;
end;

function TActiveFormX.PersistPropertyBagGetClassID(out classID: TCLSID): HResult;
begin
Result := S_OK;
end;

function TActiveFormX.PersistPropertyBagInitNew: HResult;
begin
Result := S_OK;
end;

相应的 html:
<object>
....
&amp;lt;param name="paramName" value="Hello world!"&amp;gt;
</object>
 
I

isabel

Unregistered / Unconfirmed
GUEST, unregistred user!
我是新手,对微软的这些类和接口都很不熟悉。
请问能在什么地方找到Ipersistpropertybag的help?
在delphi下我只能找到Ipersiststorage,Ipersistmessage..

用上述的方法,编译不通过,我怀疑是不是在uses子句里少写了什么,
可我有不知道该是什么。
 
I

isabel

Unregistered / Unconfirmed
GUEST, unregistred user!
接受答案了.
 

Similar threads

回复
0
查看
807
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
顶部