下面通过一个例子说明在LabVIEW平台中使用ActiveX控件编程的方法。
前面板设计
本例VI程序运行前面板如图1所示,模拟了某个测试过程的进度状态。在前面板上的底部调用了操作系统提供的ActiveX控件——状态栏控件,在状态栏上分了三个区域,分别指示了当前的测试进度,键盘的大小写开关状态(键盘上的“Caps Lock”键未打开时,标识字符“CAPS”为禁用型的灰色,否则以正常的黑色字体显示)和当前的日期信息等。当按下前面板上的“Start”按钮时,启动测试,“Testing”指示灯亮起,并在状态栏上的第一个区域显示如“Testing...... 79%”样式的测试进度信息,当测试完成时,“Complete”指示灯亮起,“Testing”指示灯灭掉,并在状态栏上显示“Testing Complete”信息。
图1 调用状态栏控件示例前面板
前面板中插入状态栏控件的方法为,在前面板“ActiveX容器”控件的右键菜单中选择“插入ActiveX对象...”命令,弹出“选择ActiveX对象”对话框,选择“Microsoft StatusBar Control”控件。插入状态栏控件后,在“ActiveX容器”的右键菜单中会新增一项对于该ActiveX控件的属性设置项。如对于本例,右键菜单中选择“StatusBar”“Properties”,弹出如图2所示的状态栏属性框。它是ActiveX控件本身提供的对话框,由ActiveX控件的开发者提供给用户使用的属性设置的工具,在这个工具中可以对所有的可写属性进行修改或查看。
图2 ActiveX对象本身提供的属性设置对
程序框图的代码实现
本例程序框图最外层使用了两帧顺序结构,第一帧为状态栏的初始化代码,定义其每个区域的风格、初始文本内容及宽度等信息。第二帧为状态栏的信息更新代码,主要为在事件结构中响应前面板的“Start”按钮的“值改变”事件,在该事件中模拟仿真某程序的测试过程,在状态栏的第一个区域中更新当前的测试进度信息。下面分别进行说明。
(1)状态栏的初始化代码
如图3所示,状态栏在外观上是由多个区域面板(Panels)组成的,每个区域面板(Panel)都提供了多个属性或方法对其进行单独控制。在图3第一帧的初始化代码中,首先通过属性节点获得“Panels”属性,然后调用“Panels”的方法“Clear”清除掉所有的区域面板,最后调用“Panels”的方法“Add”为状态栏增加三个区域面板并设置每个区域面板的宽度。在“Add”方法中,包含多个输入参数,本例仅对“Index”、“Text”、“Style”进行了设置,分别设置每个区域的索引值、初始文本和区域风格。其中,每个区域的索引值从左到右是从1开始的,初始文本除第一个区域设置为“Ready”外,其它两个都设置为空字符串,风格参数分别设置为0、1、6,分别代表了当前区域显示内容为文本、大小写状态和系统日期。调用方法“Add”函数后将返回一个当前添加的区域面板引用,利用该引用可以设置每个区域的宽度,本例分别设置为140、50、120。在第一帧中通过顺序结构的局部变量将“Panels”的引用传递到第二帧中供后续使用。
图3 状态栏的初始化代码
(2)状态栏的信息更新代码
如图4所示,在第二帧的“Start”按钮的“值改变”事件中,实现状态栏的第一个区域实时显示当前的测试进度信息。代码中首先通过“Panels”调用方法“Item”获取状态栏第一个区域的“Panel”引用,参数“Index”输入1,代表对第一个区域面板操作。然后在For循环中调用“Panel”的“Text”属性设置当前的测试进度信息。该例中,每隔50ms在前面板上更新一次当前的测试进度信息、两个状态指示灯的信息。
图4 状态栏的信息更新代码
结论
以上就是ActiveX控件下载以后LabVIEW调用ActiveX控件的编程方法,由上面的例子可以看出,ActiveX控件类似于LabVIEW本身的控件,具有独立的显示界面,以及独立的属性、方法甚至事件,在系统中安装注册一个ActiveX控件后,操作系统中所有应用程序都可以使用这个控件,同时,LabVIEW语言调用ActiveX控件的编程也相对比较简单。