|
|
自定义属性
图形除了系统固有的各种基本属性(如名字、大小、旋转角度等)外,还可以添加自定义的属性。自定义属性分为两类,一类是静态属性,用来描述图形的数据特征,例如一个城市的人口、面积等。二类是动态属性,用来描述图形的动态特征,例如开关的分合、电压表上的电压、储液罐中的液位,这些值的变化会导致图形形态的变化。
1、自定义一类属性
任何图形或者页面都可以添加自定义一类属性,这种属性只能是字符串。
在集成开发环境中,选择菜单“程序/添加新属性”,选择“一类”,分别填写属性名称和初始化值:

关于属性名称的命名规则,参见名字命名法。
完成后我们在右侧属性栏中可以看到新添加的属性(自定义的属性用红色字体表示)

图形的成员函数SetPropertyValue可以实现给图形添加属性,形如SetPropertyValue( "人口", "10" )。以后可以用SetPropertyValue函数修改已有属性的值,但是不能改变其类型。例如:SetPropertyValue( "人口", "20" )是正确的,而SetPropertyValue( "人口", 20 )则是错误的,因为“人口”属性是字符串型,不能修改。
属性可以用GetPropertyValue函数读取,但是在读取之前,为了确保该属性存在,最好先用HasProperty函数判断一下。
2、自定义二类属性
只有页面才可以添加自定义二类属性,当以后页面被作为元件使用时,这样的属性才起作用。
在设计元件时,在页面空白位置单击左键后(表示对当前页面进行操作),选择菜单“程序/添加自定义属性”,打开属性定义对话盒:

属性、取值方法、赋值方法的命名规则见名字命名法。
如果属性只有取值方法,没有赋值方法,则这个属性将是“只读”属性。不允许修改。
如果属性不可见,则属性名将不出现在视图属性列表窗口中,但程序仍然可以把它当作属性来读写。
● 取值方法的定义
当我们读取二类属性的值的时候,这个值从何而来呢?
一种是直接使用Initialize中声明的一个全局变量,在取值方法编辑框内输入这个变量的名字,另一种是使用取值函数,在取值方法编辑框内输入这个函数的名字,取值函数没有参数,并且一定要返回一个值。
private function GetValue()
......
return xxxxxx
end function
在视图属性列表窗口中,我们可以看到那些红色的二类属性右侧有一个值,这个值就是调用此函数返回的结果。
切忌在return语句中返回此属性本身!因为这样将导致再次执行取值函数,造成死循环,系统堆栈将很快耗尽!
● 赋值方法的定义
当我们向二类属性传递一个值的时候,要做什么事情呢?
一种是直接存到Initialize中声明的一个全局变量中,在赋值方法编辑框内输入这个变量的名字,另一种是调用一个赋值函数,在赋值方法编辑框内输入这个函数的名字,赋值函数有一个参数,就是给属性赋值时传递来的值。
private function SetValue( AValue )
......
end function
在视图属性列表窗口中,当改变某个自定义属性的值时,实际上调用了上面这个函数,新值作为参数。
切忌在此赋值函数中又写对此属性赋值的语句!因为这样将导致再次执行赋值函数,造成死循环,系统堆栈将很快耗尽!
● 属性的编辑方式
自定义属性的编辑方式决定在视图属性列表窗口中,编辑属性时的辅助编辑手段,基本是如下几种:
| 编辑方式 | 描述 |
|---|---|
| Arrow | 箭头选择框 |
| Bool | 下拉选择,含True和False两个值 |
| Color | 颜色选择框 |
| Cursor | 光标选择框 |
| Double | 小数输入框 |
| FontName | 字体名选择框 |
| FontSize | 字体尺寸选择框 |
| FontStyle | 字体风格选择框 |
| Int | 整数输入框 |
| LineType | 线型选择框 |
| Name | 名字输入框 |
| Pattern | 网纹选择框 |
| Picture | 图片选择按钮 |
| TextAlign | 文字对齐选择框 |
| 自定义下拉列表 | 可以输入一个公有函数名作为属性类型,这个函数是没有参数的,而且一定要返回一个数组,这个数组应该在Initialize中声明,数组每一个元素都是字符串。 |
二类属性不能用程序添加,只能在集成开发环境下实现。在脚本中,对二类属性和基本属性的读写方法没有区别。比如,Switch1.OnOff = True,这里元件Switch1的自定义属性OnOff可以被直接赋值。在其他语言中,应该用SetPropertyValue和GetPropertyValue读写二类属性的值。要判断图形是否存在某个属性,可以调用HasProperty。
@2004-2007 北京图王Visual Graph.版权所有. |