西门子COMOS软件开发定制学习8-查询列表间的数据交互

?本篇在西门子COMOS软件开发定制学习6-管理界面定制基础上定制,简单介绍两个查询列表之间的数据交互。

实现效果:

在左侧列表中选择某一设备,右侧列表自动根据所选设备,显示该设备相关的设计图纸(如PID图纸或电气图纸等);

在右侧列表中选择某一图纸,点击“查看文档”按钮,将自动打开设计图纸,并在图纸中自动定位到左侧列表所选的设备。

效果动图如下:

实现原理:

  • 借助Query的Onchange事件,实现左侧列表选择时触发动作。
  • 设备与图纸通过docObj对象连接,假如设备对象为a,那么
  • a.BackPointerDocObjs ‘为设备所在的所有图纸链接的集合

    a.BackPointerDocObjs.item(1).owner ‘为设备所在的第一份图纸

  • 相反,如果a为图纸
  • a.docObjs ‘为图纸中所有设备链接的集合

    a.docObjs.item(1).reference ‘为图纸中包含的第一个设备

    定制过程如下:

    在“设备管理”基础对象的界面中进入“设计模式”,鼠标右键创建“属性”。

    选择“框架”

    新建文档Query

    删除Query中的“模型”列

    在“文档”列的表头处鼠标点击右键,选择属性

    点击“确定”按钮,关闭当前窗口。

    点击“确定”按钮,关闭当前窗口。

    点击Query左上方的“保存”按钮,保存Query。

    选择保存位置并输入名称。

    回到设备管理界面,新建“属性”,选择显示类型为“查询”,名称为“Qry2”。

    拖拽设置Qry2的尺寸大小

    在Qry2上鼠标右键,选择“属性|显示属性”。

    选择此前创建的文档Query拖拽至当前窗口“SO1基础项目”处,并取消“立即执行查询”的勾选。

    点击“确定”按钮,保存并关闭窗口

    在左侧Query上鼠标右键,选择“属性|属性”。

    在“脚本”选项卡,选择“Sub OnChange()”

    输入以下脚本

    Sub OnChange()

    ‘获取当前环境的所有QueryBrowser

    Set Brws = GetSpecOwner.Workset.globals.SpecQBrowsers

    Set specSteps = Nothing

    Set specSteps = owner.spec(“Qry1”)

    Set QBrowser1 = Nothing

    ‘获取名称为“Qry1”的QueryBrowser即当前Query的Browser

    Set QBrowser1 = Brws.Item(specSteps.SystemFullName)

    ‘获取名称为“Qry2”的QueryBrowser,即右侧Query的Browser

    Set QBrowser2 = Brws.Item(owner.spec(“Qry2”).SystemFullName)

    Set Query2 = QBrowser2.Query

    If QBrowser1.selectedRowObjects.Count>0 Then

    Set SelObj=QBrowser1.selectedRowObjects.Item(1)

    ‘当前设备关联的docObjs集合赋予Qry2中进行显示

    Set Query2.baseQuery.OrigCollection=SelObj.BackPointerDocObjs

    Query2.refresh

    QBrowser2.refresh

    End If

    End Sub

    接下来进行功能测试。

    首先将设备通过拖拽方式绘制在多个PID图纸中,并保存。

    然后在“单元”选项卡的“管理界面”对象中,查询此设备,并在左侧列表中选中,其相关图纸将自动显示在右侧列表中。

    接下来定制“查看文档”按钮功能。

    在管理界面中,新建“属性”。

    输入脚本如下:

    Sub OnClick()

    ‘事件:按下按钮之后

    Set Brws = GetSpecOwner.Workset.globals.SpecQBrowsers

    Set specSteps = Nothing

    Set specSteps = owner.spec(“Qry2”)

    Set QBrowser1 = Nothing

    ‘获取名称为“Qry2”的QueryBrowser

    Set QBrowser1 = Brws.Item(specSteps.SystemFullName)

    If QBrowser1.selectedRowObjects.Count>0 Then

    Set SelObj=QBrowser1.selectedRowObjects.Item(1)

    ‘打开右侧列表中所选对象,因此Query行对象是docObj类型对象,即打开docObj

    Workset.Globals.Navigator.GetCurrentTree.DefaultAction SelObj

    End If

    End Sub

    功能测试,右侧列表中选择任一文档,点击“查看文档”按钮。

    将自动打开PID图纸,并在图纸中自动定位到左侧列表所选的设备上。

    今天就到这里, ~转发~

    推荐阅读:

    西门子COMOS软件开发定制学习7-嵌入谷歌浏览器内核

    西门子COMOS软件开发定制学习6-管理界面定制

    西门子COMOS软件开发定制学习5-用程序绘制椭圆

    西门子COMOS软件开发定制学习4-小游戏

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2019年7月27日
    下一篇 2019年7月27日

    相关推荐