我建立了一个activeform,但是不知道怎么让它可以跟js脚本交互.
比如:控件一个属性改变时,如何让脚本检测到这样的改变并显示在ie上.
还有我怎么知道她的classid,
我试图注册没有成功,说什么找不到指定模块
昨天刚开始想做一个active,以前没用过bcb
高手能说得详细点最好了
[解决办法]
《C++Builder数据库开发实用教程》这本教材里讲得很详细,
从这里查看这本书的详细信息及目录:
http://www.zzg.3126.net/ShowFile.asp?FID=13
[解决办法]
http://www.mltang.com/article/ff571ca6-bda3-4872-8776-2f417f6b78ef.html
[解决办法]
路过,帮顶
[解决办法]
可以实现的!
[解决办法]
如何在cb里建立一个js脚本可以访问的属性或方法?
先讲方法。
1.在BCB里通过“View-> Type Library”打开Project1.tlb
2.选择IActiveFormX接口,增加一个方法Test
3.在TActiveFormXImpl类中实现此方法
STDMETHODIMP TActiveFormXImpl::Test()
{
try
{
//输入你的代码
}
catch(Exception &e)
{
return Error(e.Message.c_str(), IID_IActiveFormX);
}
return S_OK;
};
4.现在可以用脚本直接调用了var obj=document.getElementById( "控件ID "); obj.test();
然后将属性。
1.在BCB里通过“View-> Type Library”打开Project1.tlb
2.选择IActiveFormX接口,增加一个属性,比如X,注意,此时新增的属性会有一个ID,假如为127
3.在TActiveFormXImpl类中增加一个变量,如long FX;
4.写get/set函数
STDMETHODIMP TActiveFormXImpl::get_X(long* Value)
{
try
{
*Value = FX;
}
catch(Exception &e)
{
return Error(e.Message.c_str(), IID_IActiveFormX);
}
return S_OK;
};
STDMETHODIMP TActiveFormXImpl::set_X(long Value)
{
try
{
FX = Value;
}
catch(Exception &e)
{
return Error(e.Message.c_str(), IID_IActiveFormX);
}
return S_OK;
};
5.让TActiveFormXImpl继承IPersistPropertyBagImpl摸板类
class ATL_NO_VTABLE TActiveFormXImpl:
VCLCONTROL_IMPL(TActiveFormXImpl, ActiveFormX, TActiveFormX, IActiveFormX, DIID_IActiveFormXEvents)
之后加上: ",public IPersistPropertyBagImpl <TActiveFormXImpl> "
6.加入接口映射。
BEGIN_COM_MAP(TActiveFormXImpl)
VCL_CONTROL_COM_INTERFACE_ENTRIES(IActiveFormX)
//加入这条语句:
COM_INTERFACE_ENTRY_IMPL(IPersistPropertyBag)
END_COM_MAP()
7.加入属性映射
BEGIN_PROPERTY_MAP(TActiveFormXImpl)
// PROP_PAGE(CLSID_ActiveFormXPage)
//加入你的属性如
PROP_ENTRY( "X ",DISPID(127),CLSID_ActiveFormX)
END_PROPERTY_MAP()
注意:DISPID(127)中的127就是新增属性的ID
此时在脚本里写入 <param name= "X " value= "10 "> 就可以了