作属性的时候,需要做一个Property1属性,赋值和读取的代码大致如下:
long Property1Value;
......
STDMETHODIMP TMyOCX::get_Property1(long* Value)
{
*Value = m_Property1Value;
}STDMETHODIMP TMyOCX::set_Property1(long Value)
{
m_Property1Value = *Value;
}但是这样只能在运行时通过代码来给该属性赋值,如果在CBuilder的IDE的控件属性页里设置Property1 = 1,在CBuilder的IDE关闭后再打开,Property1在属性页里又变成0了。请问,如何让ActiveX保存IDE设计时的值?请求标准做法。谢谢
long Property1Value;
......
STDMETHODIMP TMyOCX::get_Property1(long* Value)
{
*Value = m_Property1Value;
}STDMETHODIMP TMyOCX::set_Property1(long Value)
{
m_Property1Value = *Value;
}但是这样只能在运行时通过代码来给该属性赋值,如果在CBuilder的IDE的控件属性页里设置Property1 = 1,在CBuilder的IDE关闭后再打开,Property1在属性页里又变成0了。请问,如何让ActiveX保存IDE设计时的值?请求标准做法。谢谢
解决方案 »
- 现在大家最常用的封包分析,查看工具是什么
- .dcu问题
- 我是FOXNT, 请小班主们注意一下.
- 怎样调用事件代码
- BDE 直接连 Access数据库,怎么连?
- 大家帮我看看,如何让ReadProcessMemory读入两个内存地址
- dbgrid 难题
- while ADOQuery1.FieldValues['号']<>Form1.Edit1.Text and (not ADOQuery1.eof) do此句哪里有错啊,真不理解。
- 请看下面一段代码,edit2.text为什么出错?
- 师父们呢?
- 求《Delphi 7实用程序设计100例》或《Delphi 6实用程序设计100例》电子书
- 问题 有一个问题
在Delphi中,当你声明属性的时候,有两种情况可以让你将属性值保存到.DFM中:
1. 将stored值设为true:
property ClothColor : read GetClothColor write SetClothColor stored true;
2. 将stored值设为true,指定default限定符并且修改后的值与默认值不相同(与上面的情况其实相同,只是判断修改后的值是否与原值相同,避免不必要的操作):
property ClothColor : read GetClothColor write SetClothColor stored true default clRed;
楼主问的到底是什么?
制作ACTIVEX时的属性,
和IDE使用ACTIVEX设置的值是两回事。
ACTIVEX控件它使用时的属性值都是因它环境保存的。
比如你拖一个ACTIVEX到FORM上,在IDE里面设置它的属性,这时候,这些属性就
保存在这个FORM的DFM文件里,ACTIVEX本身是不会自动去保存这些东西的。当然,你会想,要在某台机子里面让ACTIVEX共有一套属性,
可以试试这样,实现ACTIVEX的时候,set_XXX方法里面把属性值写入注册表。
你说的只是VCL的属性制作方法,不是OCX的,本质不同的
回:halfdream(哈欠)
我不知道为什么IDE里,把我做的OCX放到FRM上,为什么关闭IDE后FRM没有把OCX的属性保存下来,反正每次重新打开这个FRM,OCX属性的属性都回到默认值了。写注册表是不可能的,难道把源代码移交出去的时候,还要带个.reg文件吗?
如果我直接加入public IPersistStorageImpl<TActiveFormXImpl>,编译错误:cannot cast from 'TActiveFormXImpl *' to 'IPersistStorageImpl<TActiveFormXImpl> *',但是这句话在VC里应该是正确的,即使加入COM_INTERFACE_ENTRY_IMPL(IPersistStorage)或者COM_INTERFACE_ENTRY(IPersistStorage)也同样错误,请指点。