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

实现效果:

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

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

效果动图如下:

实现原理:

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

a.BackPointerDocObjs '为设备所在的所有图纸链接的集合

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

  • 相反,如果a为图纸

a.docObjs '为图纸中所有设备链接的集合

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

定制过程如下:

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

选择“框架”

新建文档Query

删除Query中的“模型”列

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

编辑“文档”列的“对象评估”选项卡,"导航步骤"中选择“Owner”

编辑“值计算”选项卡,“显示”参数选择“名称”

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

在“描述”列的表头处鼠标点击右键,选择属性。编辑“对象评估”选项卡,选择“导航步骤”为“Owner”。

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

点击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()”

输入脚本如下:

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-小游戏

学习swing鼠标点击事件心得体会_西门子COMOS软件开发定制学习8-查询列表间的数据交互...相关推荐

  1. 无法嵌入互操作类型 请改用适用的接口_西门子COMOS软件开发定制学习7-嵌入谷歌浏览器内核...

    首先需要声明的是,本篇并非COMOS实用案例,只是希望借此让大家了解,如何使用微软的WPF和C#语言开发COMOS插件. 首先看下效果图 功能说明: 拖拽COMOS设备至定制的浏览器,自动根据设备的名 ...

  2. QT之鼠标点击事件学习

    最近在学习点击鼠标事件,在这分享给大家 window.h中的配置 #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow& ...

  3. java鼠标点击事件_Java 鼠标点击事件实例

    首先我们应该知道鼠标点击事件怎么实现 其部分代码如下 if (anyEvent.getButton() == MouseEvent.BUTTON1) {} e.getButton()返回值分别为NOB ...

  4. java 鼠标点击按钮事件_Java 鼠标点击事件实例

    首先我们应该知道鼠标点击事件怎么实现 其部分代码如下 if (anyEvent.getButton() == MouseEvent.BUTTON1) {} e.getButton()返回值分别为NOB ...

  5. php鼠标点击事件,javascript模拟鼠标点击事件的实例代码

    javascript触发模拟鼠标点击事件 事件触发器就是用来触发某个元素下的某个事件,IE下fireEvent方法,高级浏览器(chrome,firefox等)有dispatchEvent方法. 一般 ...

  6. css禁用鼠标点击事件

    1.css禁用鼠标点击事件 .disabled { pointer-events: none; } 转载于:https://www.cnblogs.com/jiangtuzi/p/5728230.ht ...

  7. android 模拟点击localinstrumentation,Android Instrumentation模拟鼠标点击事件

    看了几遍网上的博客一直没有 模拟出鼠标点击事件和按钮事件,后来抱着试试态度再重试的时候终于有所斩获.下面把具体的情况记录一下: 首先我们必须了解类 Instrumentation: Instrumen ...

  8. [css] 怎样用纯CSS实现禁止鼠标点击事件?

    [css] 怎样用纯CSS实现禁止鼠标点击事件? pointer-events: none; 是css3新出现的属性,意思就是禁止鼠标点击事件,当元素中有这一属性时,链接.点击事件统统失效. 个人简介 ...

  9. 【Qt串口调试助手】1.3 - 重写ComboBox下拉框的鼠标点击事件,实现点击下拉框扫描可用串口

    由于ComboBox没有鼠标点击信号,所以如果想实现点击下拉框响应,需要重写ComboBox下拉框的鼠标点击事件.在点击事件中,添加扫描可用串口代码,实现点击下拉框时重新扫描串口.并且下拉框内容输出端 ...

最新文章

  1. #6279. 数列分块入门 3(区间修改,查询权值前驱)
  2. Redis 概念以及底层数据结构
  3. Table 'xxxxx' is marked as crashed and last 解决办法
  4. If you are confused about the future
  5. SpringMVC跳转页面默认类型和转发、重定向的使用
  6. 如何从数学角度解释何恺明新作Masked Autoencoders (MAE)?
  7. SQL Server Profiler的一个小问题
  8. 我遇到的一个怪现象!
  9. Python对自定义离散点进行指定多项式函数拟合
  10. Linux Crontab 任务管理工具命令以及示例
  11. 使用viewPage实现图片轮播
  12. 恢复 混淆后的 stacktrace 文件
  13. 不可不知的 Android strings.xml 那些事
  14. 中小型研发团队架构落地实践18篇,含案例、代码
  15. Memcached(七)Memcached的并发实例
  16. 为知笔记保存为html,为知笔记使用方法
  17. 嵌入式Uboot,通过tftp进行内核镜像的加载及flash写入
  18. 小马哥----高仿苹果6S A236 刷机拆机主板图与开机界面图 更新解锁界面 全网通4G 警惕
  19. vue数据传递--父传子-方法传递
  20. 设置PPT幻灯版自动翻页播放

热门文章

  1. guava之cache
  2. 自定义标签 (choose)
  3. Date Picker控件:
  4. 几个常用SQL2000语句
  5. WinAPI: SetTextColor - 设置设备环境的文本颜色
  6. [Leetcode][第40题][JAVA][数组总和2][回溯][剪枝]
  7. [剑指offer][JAVA]面试题第[21]题[调整数组顺序使奇数位于偶数面前][双指针]
  8. [剑指offer][JAVA]面试题[第23题][合并K个排序链表][分治][优先队列]
  9. java环境变量设置优化_Mac/windows配置jdk环境变量-seo优化只选拉一八科技
  10. =在 java中怎么表示_在Java中各种类型运算符的介绍与其基本使用方式(有具体使用示例)...