能否通过在HTML文件中设置参数,传给ActiveForm,ActiveForm根据这来显示(100分)

  • 主题发起人 主题发起人 okoy
  • 开始时间 开始时间
O

okoy

Unregistered / Unconfirmed
GUEST, unregistred user!
Java APPLET 可通过在HTML文件中设置参数,再传给Applet,applet根据这
来决定APPLET的显示(如决定背景颜色).不知DELPHI 中的ActiveForm能否
实现这种功能?每次看见ActiveForm那讨厌的灰窗口就来气
谢谢!
 
你设计activeform的时候就可以处理窗口的背景啊!
 
要是这样就好了
但可能有这种情况,ActiveForm嵌讨在几个HTML文件中,切这些html文件
背景不同。此时只能利用传递参数的方法!
 
在ActiveForm的类型库中设置一些属性接口.
在网页中给相应的属性名付值
 
pd:
在原理上我也知道这样做,但就是有点不知在那下手
能否做一个最简单的离子,邮给我
谢谢!
 
在类型库编辑器中,新建属性iformcolor,类型为整型,类型库会自动为你生成对应的两个函数框架,Getiformcolor与Setiformcolor.你只需要Setiformcolor。在此函数中进行处理,通过传入的值决定颜色。
 
实在不好意思,我在得到这两个函数之后不知如何进一步处理,能否比较详细的说明如何处理
1: Sysint是否是外部传进来的数值
2: ActiveForm和普通的Form不一样,不能利用Form.Color赋值,我不大清楚如何在程序之中为ActiveForm赋值
我的ActiveForm的名字是hwqinput,利用hwqinput.color不行,但
hwqinput确实有Color这一属性,为何。
3: 除了在Setiformcolor中进行一些处理外,是否还要在其他的地方进行编程?
4: 在HTML文件中如何在<Object>.....</Object>之间进行设置,参数名和程序(ActiveForm)中的那个
参数对应,是否是Setiformcolor中的某一变量
实在不好意思,打扰了!
如果方便的话,能否给点代码,我想大概不会超过15行吧。
okoy
 
问题的关键我认为就是如何获得ACTIVEXFORM的界面接口,我在实现分布式的系统
时也有同样的问题。
如果解决了也通知我一下。
我目前也在找有关的资料。。。
 
在此论坛上,有一位高手回答的很清楚不知你们是怎么搞的,现抄录如下:
用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:
.... <param name="paramName" value="Hello world!">



 
具体应该怎么调用嘛。。。
还是等于没有说。。。!!!
ActiveX Form接口应该怎么获得?
我是在应用程序中使用ActiveX Form,系统首先将自动创建该对象。
之后我想调用该对象的方法并访问它的属性。
我需要获得IDispatch,请在深入一点。。。
 
cckkww:
你的方法未免太烦琐了,要这样的话,要Activex还有合用?
我觉得只是参数传递与屈指的问题,不可能如你所说。如果你做过的话,可以由
一点代码给我。分数全给你
如何?
 
附加功能 将问题提前
 
wjiachun:
附加功能 将问题提前
what do you mean?
 
这个问题一点都不复杂,在网页的object标签中加入ActiveX的ID,该ID就是ActiveForm在
程序中的窗体名,也就是注册表中的progID的后一项变量。在ActiveX中增加接口方法或属性
以传递外部参数。html中写入脚本,用脚本调用属性或方法即可实现你想要的。建议你不要用html
调用,用asp最好,asp+Activex搞定一切。代码不超过5行。相信你能明白。
 
新建一个ActiveForm的时候好像就有一个Color属性可以设置,代码如下
procedure TMyEditor.Set_Color(Value: OLE_COLOR);
begin
Color := TColor(Value);
end;
在网页中直接写上一句param name="color" value=xxxx就可以了呀
至于如何在程序控制本身的窗口,用self就行了,如果要在别的地方用,
设一个变量,MianFrom: TMyActiveForm;
然后Create的时候,MainForm := self;
别的地方就可以用MainForm了。
 
To:slzhang_2000
關于在ASP中對ActiveForm屬性賦常量時,你提到方法完全可得到解決,但是:如果在ASP中
將Session中某一變量值賦給ActiveForm屬性便有問題,在瀏覽器中將出需要一Session物件,
其Asp代碼如下,請多指教:
{<OBJECT
ID="afp_module"
classid="clsid:4FEF9E70-A34D-11D4-88EB-0000210015E1"
codebase="http://gfc0220/MD52Scripts/afp_module.ocx#version=1,0,22,0"
width=777
height=530
align=center
hspace=0
vspace=0
>
</OBJECT>
<Script Language="VBScript">
afp_module.UserName=Session.Contents("UserID")
</Script>}
 
这个问题的原因是你对com接口不是很清楚,问题不是处在asp,而是在activexform接口中
定义的属性在外部调用时使用的是函数方法,我不知道您是怎么能够定义username接口属性的
希望你多看com接口中属性的定义
该属性的调用用activeForm.set_xxx(const value:widestring):Hresult--->设置属性
activeForm.get_xxx:widestring
希望我的回答能解决您的问题;
另外您asp的写法可能也存在问题,看看asp的书,脚本里面应该少了asp的标记%
 
我前阶段做过有关activeform的东东,有比较深入的了解,如果还有什么问题,可发信给我
 
slzhang_2000
贴一点代码把
delphi程序和asp脚本一起贴出来
com以前没搞过

 
okoy:都说让你和他联系你还要贴代码??这个帖子已经被HTML破坏,打开非常慢。
你要继续讨论请新开帖子吧!!
 
后退
顶部