画面属性和方法
画面有自身的属性和方法,在脚本编辑器中,输入page,然后输入“.” ,会出现该画面的方法和属性,用户可以选择需要的方法和属性,如下图所示:
upage所支持的方法如下:
„SetPos
设置对象位置:SetPos strCompName, lLeft, lTop, lWidth, lHeight 对象名称,x坐标,y坐标,宽度,高度
„GetPos
获取对象位置:GetPos strCompName, lLeft, lTop, lWidth, lHeight 对象名称,x坐标,y坐标,宽度,高度
„SetLayer
设置画面图层:SetLayer lLayerID, lVisible 图层号,画面是否属于该图层1/0
„VisibleLayers
获取画面所属图层:VisibleLayers 设置、显示画面所属图层
举例:
显示图层:
如果要显示Ellipse22的所属图层,可以用这个脚本:MsgBox Ellipse22.VisibleLayers,如弹出的是3,则转成二进制则为0011,说明该对象属于第一和第二图层,
如果希望弹出的是十六进制模式,则可以写成:
MsgBox Hex(Ellipse22.VisibleLayers)
设置图层:
设置Ellipse22的所属图层,&H表示十六进制,&H3表示设置该对象属于第一、第二图层,&H3F表示该对象属于1-6图层,设置对象属于所有30个图层的写法是&H3FFFFFFF
Ellipse22.VisibleLayers = &H3
„EnableZoom
设置画面是否允许缩放:EnableZoom
page.EnableZoom = 0 不缩放
page.EnableZoom = 1 按照坐标(0,0)为中心缩放
page.EnableZoom = 2 按照鼠标位置为中心缩放
„GetTagNamesFromComp
获取对象关联的所有变量:GetTagNamesFromComp strCompName, varTagNames 对象名称(为空则为所有对象),所有变量(一维数组)
例子:获取"Ellipse11"对象关联的所有变量
Sub BSButton12_OnClick()
Dim a
c = page.GetTagNamesFromComp("Ellipse11",a)
b = UBound(a,1)
MsgBox b
Dim tips
For i = 0 to b
d = a(i)
tips = CStr(tips) + CStr(d) + ","
Next
MsgBox tips
End Sub
„AckTagAlarms
确认变量报警:AckTagAlarms varTagNames 变量(一维数组)
例子:通过GetTagNamesFromComp获取变量数组a,确认a的所有报警
Sub BSButton13_OnClick()
Dim a(5)
a(0) = "scada1.tag1.F_CV"
a(1) = "scada1.tag1.a.F_CV"
a(2) = "scada2.tag2.b"
a(3) = "scada2.tag3"
a(4) = "scada2.tag4"
page.AckTagAlarms a
End Sub
„GetAttrValue
获取对象自定义属性的值:GetAttrValue strCompName,strAttrName,pstrValue 对象名称,自定义属性名称,自定义属性值(返回)
例子:获取对象"CusBSButton"的自定义属性"文本"的值
Dim textValue
page.GetAttrValue "CusBSButton","文本",textValue
msgbox textValue
„SetAttrValue
设置对象自定义属性的值:SetAttrValue strCompName,strAttrName,pstrValue 对象名称,自定义属性名称,自定义属性值
例子:设置对象"CusBSButton"的自定义属性"文本"的值
page.SetAttrValue "CusBSButton","文本","打开按钮"
„ZoomIn
画面放大:ZoomIn 脚本:Page.ZoomIn
„ZoomOut
画面缩小:ZoomOut 脚本:Page.ZoomOut
„ZoomNormal
画面恢复:ZoomNormal 脚本:Page.ZoomNormal
„ZoomPan
画面浏览:ZoomPan 脚本:Page.ZoomPan
„ZoomSelect
画面选择:ZoomSelect 脚本:Page.ZoomSelect
备注:
放大:点击按钮后,鼠标变为放大镜;再在画面上点击鼠标,根据鼠标原点为中心点进行大;
缩小:点击按钮后,鼠标变为缩小镜;再在画面上点击鼠标,根据鼠标原点为中心点进行缩小;
恢复:点击按钮后,鼠标保持不变;画面恢复原来大小;
浏览:点击按钮后,鼠标变为手型;这时若画面大于窗口,可通过鼠标拖动画面;
退出:点击按钮后,鼠标恢复为箭头型,退出缩放功能。
缩放比例:
1.依据画面属性中的最小缩放倍率(min=5%,def=5%)和最大缩放倍率(max=2000%,def=1500%);
2.缩小,依次为:75%、50%、25%、5%;
3.放大,依次为:125%,150%,175%,200%,225%,250%,275%,...
„GetZoomScale
获取画面缩放比例:GetZoomScale lHorScale,lVerScale 水平缩放比例(返回),竖直缩放比例(返回)
„SetZoomScale
设置画面缩放比例:SetZoomScale lHorScale,lVerScale 水平缩放比例,竖直缩放比例
„GetZoomState
获取画面缩放状态:GetZoomState lState 缩放状态(返回)
缩放状态说明:
0 正常选择
1 浏览
2 放大
3 缩小
„ShowScrollBar
配置是否显示滚动条:ShowScrollBar
page.ShowScrollBar = 1 显示滚动条
page.ShowScrollBar = 0 隐藏滚动条
„ZoomStepPercent
设置鼠标滚动时的缩放比例 ZoomStepPercent
page.ZoomStepPercent = 10 设置page.EnableZoom = 2 则运行时鼠标滚轮向上滚时,画面每次放大10%,向下滚时,每次缩小10%
„SetZoomCanvasPos
设置页面当前浏览位置:SetZoomCanvasPos lHorPos,lVerPos 水平位置(返回),竖直位置(返回)
„GetZoomCanvasPos
获取页面当前浏览位置:GetZoomCanvasPos lMaxWidth,lMaxHeight,lHorPos,lVerPos,lViewWidth,lViewHeight 页面当前宽度,页面当前高度,水平位置,竖直位置,窗口宽度,窗口高度
„ReplaceVar
脚本中替换变量:ReplaceVar strTagNames 变量名称;需要配合handlepage的变量替换使用
例子:有rv1,rv2两个组态画面
rv1脚本为
Sub Rectangle1_OnClick()
Dim a
a = Array("aaa1","aaa2")
Dim b
b = Array("bbb1","bbb2")
sys.handlepage "rv2.bsp",a,b
End Sub
rv2脚本为
Sub Rectangle1_OnClick()
a = page.ReplaceVar ("cdaaa1cd")
MsgBox a
End Sub
Sub Rectangle2_OnClick()
Dim b(1)
b(0) = "abaaa1"
b(1) = "abaaa2"
c = page.ReplaceVar(b)
f = UBound(c,1)
MsgBox f
d = c(0)
MsgBox d
d = c(1)
MsgBox d
End Sub
运行rv1,点击脚本,打开rv2,且脚本中的变量被替换
„RegTags
注册变量:RegTags varTagNames 需要注册的变量数组(一维数组)
例子:注册一组变量
Sub BSButton13_OnClick()
Dim a(5)
a(0) = "scada1.tag1.F_CV"
a(1) = "scada1.tag1.a.F_CV"
a(2) = "scada2.tag2.b"
a(3) = "scada2.tag3"
a(4) = "scada2.tag4"
page.RegTags a
End Sub
„GetAttrExpr
获取对象自定义属性(Tag点类型)的表达式:GetAttrExpr strCompName,strAttrName,pstrExpr 对象名称,自定义属性名称,自定义属性关联的表达式
例子:获取对象"TextEx_Tip"的自定义属性"显示内容"关联的表达式
Dim content
page.GetAttrExpr "TextEx_Tip","显示内容",content
msgbox content
„Close
关闭当前画面 Close
page.Close
„SwitchLanguage
切换当前画面语言:SwitchLanguage strLanguage 语言
例子:将当前画面语言切换到繁体中文,要求对应的语言文件
page.SwitchLanguage "ZH_TW"
upage所支持的事件如下:
„OnLoad
画面加载:OnLoad
„OnUnLoad
画面关闭:OnUnLoad
„OnClick
画面点击:OnClick 在画面上没有图元的地方点击响应该事件
„OnLButtonDown
画面左键按下:OnLButtonDown(lFlag, lPointX, lPointY) 在画面上没有图元的地方左键按下响应该事件
„OnLButtonUp
画面左键弹起:OnLButtonUp(lFlag, lPointX, lPointY) 在画面上没有图元的地方左键弹起响应该事件
„OnRClick
画面右键点击:OnRClick 在画面上没有图元的地方右键点击响应该事件
„OnGetMsg
画面接收到Ctrl+F*消息:OnGetMsg(nChar, strKeyValue)
运行画面,如果按下Ctrl+F5;
nChar = 116
strKeyValue = "Ctrl+F5"
„OnNotifyMsg
画面接受到别的画面或外部程序传递的消息:OnNotifyMsg(strParam, nParam2)
„OnResponseKey
画面键盘消息:OnResponseKey(nChar, nRepCnt, nFlags)
nChar 指定了给定键的虚拟键码。
nRepCnt 重复计数(用户按住键引起的重复击键数目)。
nFlags 指定了扫描码、暂态键码、原来的键状态和上下文代码。
在画面运行中,使用快捷键alt+F8,会弹出画面信息对话框,如下:
关于系统函数(sys)及对象属性/方法请见系统函数。