LabVIEW论坛

 找回密码
 注册
查看: 1165|回复: 12

[下载贴] 【实例】细说动态注册事件实例(附程序框图+代码)

[复制链接]
发表于 2015-5-8 09:05:21 | 显示全部楼层 |阅读模式
USB-6009数据采集卡首发
众所周知,Event是LabVIEW中常用的结构,其采用中断查询方法运行,可以大大的节省CPU的利用率,提高软件的执行效率。Event的用法我想大部分资料中已经有较详细的介绍,其可响应Application、Dynamic、Panes、Splitters、Controls事件,如下图,这里不再一一赘述,而只对其中的Dynamic做简要的介绍。
   0.jpg

) ]0 k+ t( V) \0 q2 W5 [- m1 K
    Dynamic Event与其它Event Sources不同之处在于,其不是必须要响应前面板object,这样就给我们实现事件触发另外的一种独特途径,为程序的设计提供了更广的思路。我们可以在适当的时候触发事件而不需要通改变前面板的显示,这样无疑进一步的减小了程序的内存使用。
    动态注册事件函数位于Dialog& User Interface--Event面板下,如下图:
1.jpg

5 a, N- {2 q6 i' V3 Y8 I, N
    由于网上可以经常下载到的一个动态事件的程序版本较早,因此对于编写有很多不方便的地方,当把vi reference链接至event register时已无法注册鼠标的各个事件,这里我重新编写了一个动态注册事件的实例,以下是该实例的前面板与后面板截图,下面我们通过该实例来简要的解释动态注册事件:
2.jpg
3.jpg

# Z; g" m) D/ g  O4 o$ }$ Z
$ H* C. n4 w* v  E- T1 p
    该实例实现的功能为:
  • 点击前面板任意控件,并拖动鼠标,控件将跟随鼠标的移动而移动;
  • 拖动时鼠标相对控件的位置不变,这样更符合操作的习惯;
  • 当鼠标未点击在控件上时,程序不响应任何事件;
  • 放置任意控件在前面板,可拖动该控件随鼠标移动。+ N. C& o! \" `" X- H$ o
    针对vi reference无法注册鼠标事件的问题,这里用pane reference代替,之所以是数组是因为当前面板有splitter时,将有多个pane,因此此处用数组注册,同时也与属性节点输出一致。Pane reference可首先在后面板放置一个class specifier constant,然后右键点击,在列表中将其连接至panereference,如下图。当然,大家也可以通过属性节点创建常量的方法得到该reference数组。
4.jpg
+ P$ \1 I. s& \- `
    大家可能要问,为什么不直接在事件里添加对应控件的Mouse Down、Mouse Move以及Mouse Up事件呢?这样更直接明了,更通熟易懂。之所以利用Dynamic Event,其原因有如下几点:
  • 利用属性节点panel-controls,可以直接获取前面板所有控件的引用,这样点击任何一个前面板控件,都可以得到该控件对应的引用,方便对其位置进行修改。该目的主要是为了实现该实例特定功能;
  • 利用Dynamic Event,动态的注册mouse move事件,只有当mouse点击在某个控件上时,mouse move事件才有效,而当mouse up触发时,将mouse move事件注册为非法事件不响应,这样可以减小程序不必要的鼠标移动响应,无疑大大减小了程序的执行效率,这也是该实例的核心所在。
    . r: W& ?# o( m2 [* F. |6 P5 T
    以上是对dynamic event实例的简单介绍,其可以方便的扩展到其他鼠标操作中,下图是利用动态注册事件拖动图片在picture中移动,供大家参考。这里直接用控件的MouseDown事件代替了动态注册事件MouseDown,因为这里只要对一个控件进行控制,无需监控所有前面板控件。
/ ^+ r2 ^) H: u
5.jpg   w  I/ [) ^2 s+ S+ ~
6.jpg
1 v- u% u5 C" L0 p$ e- K8 Qmouse down
# U& J( A- S8 ^* Q0 u9 ^6 T: _
7.jpg
/ g$ Z  {& `. {( d. p& Umouse move- I3 S( F0 H4 i  m
8.jpg 7 t, o& x9 R. H1 y; B
mouse up
- R7 z7 X1 H) v0 l- V$ W- {) O9 Q
程序下载
& ]. R1 n, h+ s) @7 V& a' i
/ t- G, T7 B8 S7 k5 v5 D
, K" M4 z$ I' d+ g' Q% W, S1 ^- J7 _
* u5 K8 n8 h4 U2 b

DynamicEvent.rar

10.83 KB, 下载次数: 39, 下载积分: V币 -1

IDAQ-USB-6009数据采集卡
发表于 2015-5-10 16:28:13 | 显示全部楼层
在线课堂
支持支持再支持
发表于 2015-5-11 05:15:23 | 显示全部楼层
楼主呀,,,您太有才了。。。
发表于 2015-5-11 20:42:09 | 显示全部楼层
专业抢沙发的!哈哈
发表于 2015-5-12 06:11:45 | 显示全部楼层
路过。支持围观。。。
发表于 2015-5-12 17:36:00 | 显示全部楼层
元芳你怎么看?
发表于 2015-5-13 04:31:02 | 显示全部楼层
为了三千积分!
发表于 2015-5-13 15:26:41 | 显示全部楼层
回个帖子,下班咯~
发表于 2015-7-13 17:10:30 | 显示全部楼层
正需要,谢谢!
发表于 2015-7-14 14:04:14 | 显示全部楼层
飘过,围观一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|无图浏览|手机版|网站地图|测量与测试世界 ( 沪ICP备06029130号-1 )

GMT+8, 2018-4-21 21:31 , Processed in 0.131403 second(s), 42 queries , Gzip On, XCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表