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

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

实现效果:

76568abc83aba5668dcaf2f6c50e2e25.png

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

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

效果动图如下:

18075cbc4639a3e7d53a527cccbbd955.gif

实现原理:

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

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

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

  • 相反,如果a为图纸

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

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

定制过程如下:

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

16112c1f527f91a1e5331f4b6fae84ab.png

选择“框架”

31d9804f4e012991a1478b79e88ab555.png

新建文档Query

7ee7612f6fe51eb5988a43603c804724.png

删除Query中的“模型”列

092b9813ba75e1553ed8dce04513fa44.png

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

b505896e5005b96404c54829b9e93bfc.png

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

7dbbd57231748c6b27b4e84a245990a0.png

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

484a90ec2371970a30180da6c986fee8.png

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

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

49505cecbf677dd0cc925bbbc33fb848.png

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

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

0be7e30a0a671194f94a34211551b03c.png

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

c6ee77a21fc78356adf1509a4ef52ce0.png

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

167aa971d9d4499976e11f989d8a7bd7.png

拖拽设置Qry2的尺寸大小

231ecfc3ce43d6127b39efc5d7884c06.png

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

991cb00c9af0817b0a179e35fc7f13f0.png

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

2c3533607a06a858cef49dde6e270703.png

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

54ee79d3f26d69c369e3a00e20c9976d.png

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

f5f55a7017c41f3cb555d44f37084109.png

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

ef7081b603f3a488b4117e2bea1463ae.png

输入以下脚本

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图纸中,并保存。

f5fcd18b94adac130bff86a4ac2acd1e.png

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

bcc7ad19f7305c73780b15a4758e098c.png

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

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

80474c6880eeef76ba0880fd7792170e.png

在脚本选项卡,编辑“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

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

6eec34baffd56b1fdd850ba602b21fa6.png

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

6892bd664aca2fa01584d14438ac92f2.png

今天就到这里,欢迎关注~转发~

推荐阅读:

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437221.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】异步编程:.NET 4.5 基于任务的异步编程模型(TAP)

最近我为大家陆续介绍了“IAsyncResult异步编程模型 (APM)”和“基于事件的异步编程模式(EAP)”两种异步编程模型。在.NET4.0 中Microsoft又为我们引入了新的异步编程模型“基于任务的异步编程模型(TAP)”,并且推荐我们在开发新的多线程应用程序中首选TAP&#xff0…

python实验题_python实验二

安徽工程大学 Python 程序设计 实验报告 班级 物流191 姓名 王凡 学号 3190505102 成绩____________ 日期20200322 指导教师 修宇 【实验名称】 实验二 顺序结构程序设计 【思考题】 (注意不要漏答) 1、影响题1和题3计算准确性的因素有哪些?如…

解决:VS中进行Qt开发,编译时报错:打不开QWidgets.h等文件的问题

1. 先检查是否通过Qt VS Tools添加了Qt路径和配置了正确的Qt版本,这一步基本上都没问题。 2. 再检查此项目是否配置了正确的Qt版本,右键项目,选择Qt Project Settings,选择你需要的Qt版本即可,不可以为空。 3. 完成上面…

【转】1:C#的三种异步的详细介绍及实现

一、介绍异步的前世今生: 异步编程模型 (APM,Asynchronous Programming Model) 模式(也称 IAsyncResult 模式),在此模式中异步操作需要 Begin 和 End 方法(比如用于异步写入操作的 BeginWrite 和 EndWrite…

elasticsearch date_Elasticsearch在日志分析领域应用和运维实践

主要讲述了:基于ELK Kafka 的日志分析系统Elasticsearch 优化经验Elasticsearch 运维实践ElasticSearch介绍分布式实时分析搜索引擎,优点包括:查询近实时内存消耗小,搜索速度快可扩展性强高可用数据结构FST(Finite State Transdu…

【转】2:C#TPL探秘

理论: 1、 只要方法是 Task类型的返回值,都可以用 await 来等待调用获取返回值。 2、 如果一个返回 Task类型的方法被标记了 async,那么只要方法内部直接 return T 这个 类型的实例就可以。 3、 一个返回 Task类型的方法没有被标记了 asyn…

Qt添加翻译文件无效或部分无效

原因: QTranslator::load路径错误qApp->installTranslator调用时机应该在所有界面起来之前。命名空间宏导致的问题。如果一个类有命名空间宏,则宏不会转换为命名空间,导致ts文件内的上下文不包含命名空间。上下文对不上导致部分窗口翻译失…

linux shell脚本攻略第3版_「技术干货」师傅说不会写shell脚本的网安不是一个好黑客,实战...

shell脚本?在说什么是shell脚本之前,先说说什么是shell。shell是外壳的意思,就是操作系统的外壳。我们可以通过shell命令来操作和控制操作系统,比如Linux中的Shell命令就包括ls、cd、pwd等等。总结来说,Shell是一个命令…

【转】3:C#异步WaitAll的使用

编写界面如图: private async void button1_Click(object sender, EventArgs e){#region 单个执行的异步,效率慢HttpClient wc new HttpClient();string s1 await wc.GetStringAsync(textBox1.Text);label1.Text s1.Length.ToString();string s2 awa…

Qt实现QTextEdit背景透明

QTextEdit为什么要拿出来单独说,因为它继承自QAbstractScrollArea,一般的设置无效。滚动区域ScrollArea内部有一个widget,需要同时设置ScrollArea和viewport两个窗口才能实现透明。代码如下: m_text_editor->setWindowFlags(Q…

python断点调试_「Python调试器」,快速定位各种疑难杂症!!!

在很多的编辑器其实都带着「调试程序」的功能,比如写 c/c 的 codeblocks,写 Python 的 pycharm,这种图形界面的使用和显示都相当友好,简单方便易学,这个不是我这篇文章要讲的重点。今天主要是想给大家介绍一下 「 Pyth…

【转】C# 温故而知新:Stream篇(—)

目录: 什么是Stream? 什么是字节序列? Stream的构造函数 Stream的重要属性及方法 Stream的示例 Stream异步读写 Stream 和其子类的类图 本章总结 什么是Stream? MSDN 中的解释太简洁了: 提供字节序列的一般视图 (我可不想这么理解…

python 画树 递归_数据结构 - python如何递归生成树?

问 题 class Tree: def __init__(self, label): self.root label self.child {} def set_child(self, label, relate): self.child[label] relate def get_root(self): return self.root def get_child(self): return self.child 这么一颗树结构,该如何写 def cr…

java integer valueof_一文读懂什么是Java中的自动拆装箱

本文主要介绍Java中的自动拆箱与自动装箱的有关知识。基本数据类型基本类型,或者叫做内置类型,是Java中不同于类(Class)的特殊类型。它们是我们编程中使用最频繁的类型。Java是一种强类型语言,第一次申明变量必须说明数据类型,第一…

【转】面试:一个单例模式,足以把你秒成渣

去面试(对,又去面试) 问:单例模式了解吧,来,拿纸和笔写一下单例模式。 我心想,这TM不是瞧不起人吗?我编程十年,能不知道单例模式。 答:(.net 平…

【转】SQL 语句执行顺序

From:http://www.jellythink.com/archives/924 Oracle-SQL语句执行原理和完整过程详解:https://wenku.baidu.com/view/398bc427964bcf84b8d57b00.html 详解一条 SQL 语句的执行过程:http://www.cnblogs.com/cdf-opensource-007/p/6502556.h…

堆和栈的概念和区别 python_堆和栈的概念和区别

在说堆和栈之前,我们先说一下JVM(虚拟机)内存的划分: Java程序在运行时都要开辟空间,任何软件在运行时都要在内存中开辟空间,Java虚拟机运行时也是要开辟空间的。JVM运行时在内存中开辟一片内存区域&#x…

【手算】哈夫曼编码—树形倒置快速画法

哈夫曼编码的原理 参考文章:哈夫曼编码详解——图解真能看了秒懂 简单总结其原理: 需求:对重复出现的元素进行二进制编码,最高效的编码方式是哈夫曼编码。 方法:按照元素出现的频率大小构造一棵树,出现次…

【转】Web API项目中使用Area对业务进行分类管理

在之前开发的很多Web API项目中,为了方便以及快速开发,往往把整个Web API的控制器放在基目录的Controllers目录中,但随着业务越来越复杂,这样Controllers目录中的文件就增加很快,难以管理,而且如果有不同业…

centos部署python flask_用Dockerfile部署你的Flask Web应用

背景故事话说去年年底给另外一个组的同事写了一个简单的工单查询系统,用flask写的,当时是部署在我们组的一台测试物理机上,操作系统是Redhat 7。后来我们组的这台测试物理机要做其它用途,领导给两天时间让把应用迁走,问…