分享
 
 
 

OCX中得到IE传递的参数(2002/5/30 三金 版权所有)

王朝delphi·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

OCX中得到IE传递的参数(2002/5/30 三金 版权所有)

如果你的工程属于OCX工程,并且需要连接数据库服务器。那么,工程应该适

应不同的数据库连接参数,如数据服务器名、数据库名、用户名、密码等当它们发

生变化时,工程应不需修改。这就要求OCX工程能携带参数。怎么搞?往下看。

在你看这篇文章之前,最好先看一下三金所写的另外一篇文章 “EXE工程和OCX

工程的转化“。否则,后果自负。别怕,only a joke!:),不过,三金还是劝你看

一下,本篇你就会明白得快一些。如果你的OCX工程主Form是普通Form,并且继承于

工程中的ActiveForm,then,let's go on!

为了便于说明,假设工程中的ActiveForm的name为ActiveFormX,单元文件为

ActiveFormX.pas,工程主Form的name为frmMain,单元文件为MainForm.pas。总的说

来,就是在就是在TActiveFormX与TfrmMain之间加一个中间类,由此类完成参数的接

收。设此类为TActiveFormNewX,因为此类作为二者的中间类,就需要把TfrmMain的父

类由TActiveFormX改为该类。打开MainForm.pas,找到TfrmMain的声明:

TfrmMain=class(TActiveFormX)改为TfrmMain=class(TActiveFormNewX),并且,

TActiveFormNewX继承于TActiveFormX。TActiveFormNewX的声明和实现如下,你应该

把它拷到ActiveFormX.pas单元中TActiveFormX的后面。

TActiveFormNewX = class(TActiveFormX,IPersistPropertyBag)

public

ServerName,DBName,UserName, UserPassword:String;

protected

function IPersistPropertyBag.InitNew=PersistPropertyBagInitNew;

function IPersistPropertyBag.Load =PersistPropertyBagLoad;

function IPersistPropertyBag.Save =PersistPropertyBagSave;

function IPersistPropertyBag.GetClassID=PersistPropertyBagGetClassID;

function PersistPropertyBagInitNew:HResult;stdcall;

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;

end;

function TActiveFormNewX.PersistPropertyBagInitNew:HResult;

begin

Result:=S_OK;

end;

function TActiveFormNewX.PersistPropertyBagLoad(const pPropBag:IPropertyBag;

Const pErrorLog:IErrorLog):HResult;stdCall;

var

Str:OleVariant;

begin

if pPropBag.Read('ServerName', Str ,pErrorLog) = S_OK then

ServerName :=Str;

if pPropBag.Read('DBName', Str ,pErrorLog) = S_OK then

DBName :=Str;

if pPropBag.Read('UserName', Str ,pErrorLog) = S_OK then

UserName :=Str;

if pPropBag.Read('UserPassword', Str ,pErrorLog) = S_OK then

UserPassword :=Str;

Result:=S_OK;

end;

function TActiveFormNewX.PersistPropertyBagSave(const pPropBag:IPropertyBag;

fClearDirty:BOOL;fSaveAllProperties:BOOL):HResult;

begin

Result:=S_OK;

end;

function TActiveFormNewX.PersistPropertyBagGetClassID(out classID:TCLSID):

HResult; stdCall;

begin

Result:=S_OK;

end;

从代码不难看出,此类有四个public成员:ServerName,DBName,UserName,

UserPassword。参数就是传给了它们。既然是public成员,且TfrmMain是该类子

类,所以,就可以在TfrmMain中得到这四个值。注意,应该把代码写在TfrmMain

的OnShow中,而不是OnCreate。

在IE中应这样书写:

<OBJECT

classid="clsid:3E71BE48-9AE1-431D-BD68-B17AA355BF38"

codebase="ActiveFormProj1.ocx#version=1,0,0,0"

width=538

height=350

align=center

hspace=0

vspace=0

>

<param name=ServerName value=sanjin>

<param name=DBName value=tian>

<param name=UserName value=user>

<param name=UserPassword value=>

</OBJECT>

如果你想添加或减少参数,不用我多说了吧!ok,解决。

有朋友要发表意见:“我的OCX工程主Form是TActiveForm,照你的办法,我

可以在让我的TActiveForm继承于此类,我在TActiveForm中按同样的办法接收不

就的了!“。那我告诉你,参数的确能得到,不过你如果重新打开以下你的工程,

按F11看一下,TActiveForm的说有属性的和普通Form没什么两样了,虽然程序不

出错,但除了什么事和我无关。你要问为什么?我现在头有些大,要休息了。

更多更好文章尽在三金主页-天铭心草堂http://vip.6to23.com/tianmingxin

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有