更详细的关于Form++产品的技术细节,请查看下面的列表:
在Form++可视化图形源码组件库中,属性就是一个或者一组能够赋给处于运行状态组件的值。在Form++可视化图形源码组件库中我们提供通过单一的界面来存储和重新取得对象的所有属性。所有的属性都可以在运行状态下动态的添加和删除,正是由于具有在运行时发现和访问对象的属性的能力,所以可以为访问属性编写普通的服务。例如,同样的串行化代码用来存储和重新取得所有组件的属性。当新属性增加时,不必改变串行化代码。普通的属性浏览器也可以针对对象的属性给它一个相容的界面。
CFOBaseProperties是所有属性类的基类,所有Form++可视化图形源码组件库的属性类,包括画布的属性CFOFormProperties以及组件的属性CFOCompProperties都是从这个类继承下来的,从CFOBaseProperties继承下来的不同的属性类定义了不同的数据。每个CFOBaseProperties的继承类都有一个唯一的区别于其它属性类的ID,通过这个ID用户可以在对象运行时访问和操作特定的属性。
属性ID值从5000开始。5100和5100以上的属性ID可以被用户所使用,用来定义自己定制的属性。只要ID值是唯一的,同一类型的组件可以有任意多个的属性。属性ID是用来在链表中查找属性的。你也可以用它识别属性的类型,比如字体属性。在默认状态下,组件属性有一个FO_DEFAULT_PROP_ID的ID值,你可以改变这个ID去标识特定的属性。
E-Form++可视化图形源码组件库的图形基类CFODrawShape定义了专门的属性列表来允许动态增加属性对象(所有属性对象都是从类CFOBaseProperties派生下来),
此种设计有如下好处:
1)
此种设计对于轻量级可以大大的节省内存的开销,
便于统一的界面访问和存取.
2)
可以很轻松的增加新的属性而不必要修改CFODrawShape的代码.
3)
允许实现类似于为图形定义风格之类的功能.
示范代码
以下代码段显示了如何设置一个组件属性:
CFOPageProperties propPageDefault;
propPageDefault.SetPropId(FO_DEFAULT_PAGE_PROP_OD);
AddNewProperty(propPageDefault); |
以下代码段显示了如何取得一个组件属性的ID值:
CFOPageProperties
*CFOSubFormModel::GetDefaultPageProperty() const
{
return (CFOPageProperties
*)FindProperty(FO_DEFAULT_PAGE_PROP_OD);
} |
|