自定义属性

图形除了系统固有的各种基本属性(如名字、大小、旋转角度等)外,还可以添加自定义的属性。自定义属性分为两类,一类是静态属性,用来描述图形的数据特征,例如一个城市的人口、面积等。二类是动态属性,用来描述图形的动态特征,例如开关的分合、电压表上的电压、储液罐中的液位,这些值的变化会导致图形形态的变化。

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



回首页 软件简介 应用领域 技术特点 文件说明 集成开发环境 基本操作 系统参数 语法体系 activex技术文档 视图文件 页面 单元组 图形单元 文字单元 形状单元 折线单元 元件单元?VG在Delphi中的使用方法 VG在VB中的使用方法 VG在VC中的使用方法 VG在C#中的使用 Delphi Visual Basic Visual C++ C# Visual Basic .Net调用Visual Graph的函数 调试元件 自定义Visual Graph脚本语言 在运行状态下用鼠标拖动图形 图库的使用
基于Visual Graph快速开发井下人员定位系统 如何快速开发图形仿真软件系统 自已开发组态软件(one can do it) 工程平面图制作系统 工作流与图形系统 安全监测系统联网解决方案 矿井人员考勤定位系统简介 配电技术信息管理系统 线损管理系统解决方案 DR-DTS 调度员反事故演习培训仿真系统 调度自动化系统应用软件 福州电网无功电压 AVC 控制系统 马鞍山地区电网无功电压综合优化自动控制系统 变电站图形开票系统 DR-OTS电网调度智能防误操作系统 配网调度智能模拟操作系统 基于Visual Graph的电力系统图形开发

http://www.visual-graph.com

@2004-2007 北京图王Visual Graph.版权所有.