深入探讨XControl

深入探讨XControl

ID:44205378

大小:1.50 MB

页数:17页

时间:2019-10-19

深入探讨XControl_第1页
深入探讨XControl_第2页
深入探讨XControl_第3页
深入探讨XControl_第4页
深入探讨XControl_第5页
资源描述:

《深入探讨XControl》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、深入探讨XControlcontrol是LABVIEW8.x新增的功能,LV中的CONTROL我们是再熟悉不过了,这个"X"到底代表什么那,到NI网站上也没找到它的英文定义,可能相当与ACTIVEX中的"X"?虽然无法弄清楚它的定义,但是它的作用是清楚的,我个人理解它更象VC中MFC的控件自画,也具备了一些ACTIVEX的能力,与ACTIVEX的最大区别是ACTIVEX是独立于平台的,可用于各种编程环境,从这点来说,可以把它看做LV内部的activex,MFC中的控件自画是这样的,当我们要做一个特殊形状的控件时,可以设置它的一个属性是自画,owndraw,也就是说,这个控件是用户自己画出来的

2、,比如一个按钮,当鼠标进入它的控制区域,会自动显示凸起状态,还可以自动改变颜色,IE菜单就是这样,当鼠标移入的时候,背景色自动变成兰色,离开后,又自动恢复,实际上,它是在响应两个事件,MOUSE_ENTER和MOUSE_LEAVE事件.在xcontrol出现以前,我们也可以对一个控件通过属性节点和事件结构实现这种动态变化,但是有着本质的区别,xcontrol通过事件结构判断事件,利用属性节点改变其显示方式是完全在内部实现的,因此它是可以重用的,从使用方法上它和LV一般的控件没有任何区别,我们完全可以把它看成LV又给我们提供了新的控件,我的文章里多次提到AE的概念,有了XCONTROL,我们不

3、但可以保存数据,而且有了显示的能力,所以说,对于基于组件编程的LV,能力有了很大的提高.虽然xcontrol是一个新增的特性,但是它的制作方法实际上我们或多或少地都涉及到了,这就使得制作XCONTROL变得相对容易了. 可以看出,我们通过事件结构编程实现了当鼠标移入BOOLEAN控件区域时,BOOLEAN控件的CAPTION和COLOR自动发生了改变,但是所有的控制代码都是在主循环里完成了,是通过控件外部改变的,因此,我们无法重用这个控件,假如我们需要100个这样的控件,我们需要在事件结构中分别对100个控件做类似的编程,这显然是非常麻烦的.最好的办法是让这段代码在控件内部完成,这样对于使用

4、者来说,这和一般的控件没有区别,这样有效地实现了封装,所有的一切从用户的角度看,就象调用一个ACTIVEX.XCONTROL可以轻松实现这个功能我们知道LV的控件是面向对象的层次继承结构,每个控件都继承了它的父类的属性和方法,但是对于一个具体的控件,它的属性和方法都是固定的我们无法删除或者增加这个控件的属性和方法.对于XCONTROL,我们可以简单地理解成继承了一个基本控件,并在此基础上,用户增加的自己的属性和方法,是一个重新定义的,增加的大量功能的新的控件.下面看看制作XCONTROL的具体过程.  这样一个基本的XCONTROL的结构就建立起来了,存储并重新命名 lv自动生成两个自定义控

5、件,分别是data.ctl和state.ctl,两个VI,分别是Facade.vi和Init.vi这四个部分是任何XCONTROL都必须包括的基本构件。LV帮助文件中称为requiredabilities,必须的能力(直译),data.ctl代表该XCONTROL表示的数据类型,一般的控件也都代表一种数据类型,比如DOUBLE,BOOLEAN,ARRAY等等data.ctl是自定义控件,可以根据需要修改成您需要的数据类型,比如对于一个学生的个人信息,我们应该生成一个簇,包括姓名,性别,年龄,班级等。state.ctrl代表XCONTROL的显示状态,它和DATA.CTL一样,都是严格类型定义

6、。它包含的信息是我们想控制XCONTROL的属性。根据我们上面的例子,我们定义四种属性,1:鼠标进入标题2:鼠标离开标题3:鼠标进入颜色4:鼠标离开颜色。xcontrol中最复杂的就是facade.vi,facade英文意思是一个物体的正面,这里翻译成外观比较合适。当xcontrol被加载到前面板或者一个包含XCONTROL的VI调入内存的时候,该VI自动被调用,以便在显示之前做一些必要的初始化工作。我们还是用上面的例子制作一个简单的XCONTOL来说明一下,首先我们修改DATA.CTL,用一个BOOLEAN类型替代它。然后修改STATE.CTL,加入必要的属性。INIT是你在前面板生成控件

7、时自动调用了,同时它内部存储了版本信息,当检查到当前版本发生变化,自动更新。INIT一般不需要更改。重点看一下FACADE.VI,它自动生成几个事件。1:TIMEOUT事件。 在事件结构中,如果没有任何事件发生,TIMEOUT如果位连接,默认值是-1,表示永远不发生超时事件,如果连接一个固定的数值,比如100,单位是毫秒,如果没有事件发生,则每100MS触发一次超时事件,需要注意的是上面的超时事件连接的是0,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。