COMOS一体化平台提供了很多管理和设计功能,这些功能可以单独使用。但如果能将其按照自身业务需要进行有机的组合,将为普通用户带来更大的便利和效率提升。
通过定制交互界面,可以化繁为简,让相关用户只需关注自己需要的内容。清晰的功能按钮,让用户无需操作手册即可直接使用。
今天先一起学习下基本的设备管理界面定制,如下图所示:
功能介绍:
- 选择“查询节点”,输入要查询的“设备编号”,点击“查询”按钮,即在下方列表显示符合条件的设备信息。
- 选择某行设备,点击“查看设备”按钮,弹出设备属性界面。
- 点击“导出Excel”按钮,将列表自动导出Excel文件。
接下来开始功能定制,首先打开COMOS(如经常使用同一数据库,可以选择“视图|快速启动”)
那么以后每次双击COMOS图标后,将自动打开上一次关闭时所在的项目和工作层。
打开项目后,推荐创建新的工作层,可以帮助我们保护数据和恢复数据。
双击进入新建工作层,根据需要在相应结构中新建管理界面对象,此处暂创建在项目根节点,并给新建的界面对象命名。
如需设置界面的图标,可点击图标按钮,如下图所示。
点击界面对象的属性选项卡
在属性选项卡的空白区域,鼠标点击右键,选择设计模式
新建选项卡
填写选项卡名称和描述,其中名称是必填关键字
进入新建选项卡,新建属性
显示类型选择“框架”,输入名称和描述,其中名称为必填关键字
依次按下图创建显示类型为“链接”、“编辑字段”“按钮”、“查询”的属性参数,如下图所示
调整属性参数尺寸和位置,如下图所示
接下来定制用于显示设备信息的Query列表。
在COMOS上方菜单选择“查询(Q)|工程对象查询|查询:工程对象”
拖拽起始对象和基础对象至相应位置
在“标签”列的表头上鼠标点击右键,选择属性
将描述“标签”改为“设备编号”
点击“值计算”选项卡,将“标签(label)”改为“名称(Name)”
然后点击“确定”按钮关闭当前属性窗口。
在“描述”列上鼠标点击右键,选择属性,修改“描述”列的描述为“设备名称”。
选择设备属性参数“功率”和“数量”拖拽至“设备名称”列的表头处,松开鼠标将自动创建“数量”和“功率”列(注:此处泵对象是定制对象,您可按自己实际需要定制Query列表)。
点击Query上部“保存”右侧的箭头按钮,选择“另存为”
拖拽保存节点,输入名称,点击“确定”保存。
关闭Query界面,回到“管理界面”对象。选择“查询”参数,鼠标右键选择“属性|显示属性”
按下图拖拽此前保存的Query,并取消“立即执行查询”。
“立即执行查询”功能介绍:当Query属性参数打开时立即执行查询,但对于今天我们定制的管理功能,只需“查询”按钮点击时执行查询,因而取消此选项,避免不必要的性能浪费。
双击“查询”按钮或右键菜单选择“属性”,弹出属性窗口,选择“脚本”选项卡,双击“Sub OnClick()”,打开脚本编辑窗口。
输入定制脚本:
Sub OnClick()
'事件:按下按钮之后
If GetSpecOwner.SystemType=13 Then Exit Sub '当前对象为基础对象时不执行后续脚本
'获取当前COMOS进程中的SpecQBrowsers
Set Brws = GetSpecOwner.Workset.globals.SpecQBrowsers
Set specSteps = Nothing
Set specSteps = owner.spec("Qry1") '获取当前界面的Qry参数
Set QBrowser1 = Nothing
Set Query1 = Nothing
'在COMOS进程的全局变量SpecQBrowsers中查找是否有当前Qry参数的Browser
'注意:只有Qry参数处于打开的界面中才会在SpecQBrowsers中存在
Set QBrowser1 = Brws.Item(specSteps.SystemFullName)
Set Query1 = QBrowser1.query '通过QueryBrowser获取Query
Set topQry= Query1.owner '通过Query获取TopQuery
Set topQry.mainObject=owner.spec("Z00A00002").LinkObject '赋予查询的起点
strName=owner.spec("Z00A00001").DisplayValue
Call SetFilter(Query1 ,strName) '筛选设备编号
topQry.execute '执行查询
QBrowser1.refresh '刷新Query浏览器
End Sub
点击“确定”关闭脚本编辑器,回到“脚本”选项卡,双击“UserScriptBlock1”,输入“筛选”脚本。
' UserScriptBlock1
Sub SetFilter(Qry,strName)
Set F=Qry.Filter '获取Query的过滤器对象
F.clear '清空已有的过滤条件
If strName<>"" Then
Set FI=F.addNew '增加一条过滤条件
Set FI.Column=Qry.baseQuery.columns.Item("Object") '过滤名称为Object的列
FI.Operator=9 '操作条件为9对应 “包含”
FI.value=strName '查询的值为strName
FI.caseSensitive=false '大小写不敏感
End If
End Sub
依次点击“确定”按钮关闭脚本编辑窗口和属性窗口。
以上程序涉及的Query、QueryBrowser、TopQuery、Filter对象,其层级结构如下图所示:
关于Query详细的程序语法,请参考COMOS帮助文件中的“Class_Documentation_ivbQuery_dll_zhCN_zh-CHS.pdf”。
目录如下图所示:
Query的属性方法示例:
推荐先通览查询接口的内容,然后实际开发过程中再根据需要查询具体方法和属性。
接下来定制“查看设备”按钮功能,双击“查看设备”按钮或右键菜单选择“属性”,弹出属性窗口,在脚本选项卡的“Sub OnClick()”中输入以下脚本:
Sub OnClick()
'事件:按下按钮之后
Set Brws = GetSpecOwner.Workset.globals.SpecQBrowsers
Set specSteps = Nothing
Set specSteps = owner.spec("Qry1")
Set QBrowser1 = Nothing
Set Query1 = Nothing
Set QBrowser1 = Brws.Item(specSteps.SystemFullName) '获取QueryBrowser
If QBrowser1.selectedRowObjects.Count>0 Then '获取当前列表中选中的对象集合
Set SelObj=QBrowser1.selectedRowObjects.Item(1) '获取当前列表中选中的第一个对象
Set App = Project.Workset.Globals.Application
Call App.ShowPropertiesOnMdiChild(selobj, false,