第五讲 控件及控件操作类函数
在每个Windows 应用程序中,都可以发现一些按钮、 文本框或者列表框,这些要素被称之为控件。类似于Visual Basic 、Visual C++, Delphi 等可视化编程软件,LabWindows/CVI
也有自成体系的控件。
LabWindows/CVI 中不仅包含一般编程软件中常用的控件,而且有在测控系统中专用的控件,在传统仪器中常见的刻度盘、旋扭、开关5.1控件的种类
等要素在LabWindows/CVI 的控件中都有反映,使程序员可以更加方便地建立专业、友好的用户界面。value函数什么意思
LabWndows/CVI 的控件是其主要特点之一。这些控件种类齐全,从一般的按钮、界面修饰到专业性很强的表盘、开关等。通过在面板上单击右键,在弹出的快捷菜单中(或者在用户界面编辑窗口的【Create 】 下拉菜单中)选择需要的控件即可创建控件。 LabWindows/CVI 中的控件主要包括以下几类:
1、Numeric 控件。是用来输入、显示数值,比如需要输入波形的幅值或者输出计算的结果。在LabWindows/CVI 中有12种不同形式的Numeric 控件,如图5.1所示。 数字输入框(Numeric)、颜输入框(Color Numeric)、温度计(Thermometer)、 容器(Tank)、滑尺(Slide)、旋钮(Knob)、量表(Gauge)、刻度盘(Dial)、仪表(Meter)等。
图5.1
2、String 控件。是用来输入、显示单行字符串的控件。
3、 Text Message 控件。是只用来显示字符串的控件,没有输入功能。
4、TextBox 控件。是用来输入、显示多行文本的控件。
5、Command Button 控件。为命令按钮控件,是最常见的控件之一,它包括5种不同形 状的按钮和图片按钮(Picture Command Button)。
图5.2
6、Toggle Button 控件。是具有切换状态功能的按钮,它具有On 和Off 两种状态,包括 16种显示形式,如图5.3所示。平面显示按钮、立体显示按钮、具有文本显示的按钮、单选框、复选框、图片按钮等。
图5.3
7、LED控件。是用来模拟传统仪器面板上的发光二极管,它具有On和Off两种状态和4种显示形式。
8、Binary Switch控件。和Toggle Button控件类似,具有On和Off两种状态和6种显示形式。
9、Ring控件。类似于VB、VC++中的下拉列表框,控件取值都是从列表中取得。其具有和Numeric控件类似的19种显示形式,如图5.4 所示。
图5.4
10、list Box控件。为列表框控件,用来显示和选择多个选项。例如选择采样通道来
显示相应的波形。
11、Decoration控件。为装饰用户界面的控件,它具有15 种形式。
12、Graph控件。是显示曲线的控件,一般用于显示信号波形或者信号分析结果,具有曲线图和条形图两种形式。Graph控件是LabWindows/CVI中最复杂、功能最强大的控件(在后面的章节中将会详细介绍)。
13、Pictrne控件。为图片控件,用来显示各种类型的图片文件,可显示的图片类型包括:PCX文件、BMP文件、DIB文件、RLE文件、ICO文件、WMF文件和EMF文件等。
14、Timer控件。为定时器控件,程序运行时为不可见控件。
15、Canvas控件。是用来显示和编辑文字、图形的控件,所编辑的内容保存在一个DIB 文件中。
在用户界面中修改控件属性的方法与修改面板的方法类似:双击控件,在弹出的控件属性对话框中修改控件属性。由于LabWndows/CVI中的控件形式多样、用法复杂,控件的属性也各有不同。
5.2控件的属性及其函数
LabWindows/CVI中的用户界面函数库提供了大量的控制、修改控件的函数。本讲主要介绍其中常用的和基础的一些函数。
5.2.1数值型控件
1、属性:数值型控件的种类不同,其属性设置也不完全相同,应根据具体需要来设置。
从图上可以看出,属性分为4个部分:
Source Code Connection:完成控件名称和回调函数名称的设置;
Control Setting:控件相关参数设置;
①Default Value:表示控件起始点值(默认值为0.00);
②Data Type:表示控件显示数锯的类型;
③Minimum:表示控件显示数据的最小值;
④Maximum:表示控件显示数据的最大值;
⑤Inc Value:表示控件显示值的步逬值;
⑥Range Checking: 一般不予设置。
Control Mode 栏中有 4 神选择,分别为Normal、Hot、 Indicator 和 Validate。
①Normal方式:控件数值既可以由外界输入,也可以从程序中赋值,但不能产生用户
事件
②Hot方式:除了可产生用户事件外,其余则和Normal方式相同。通常在此控制方式下,只费控件的状态方式改变,就可以产生一个用户寧件,程序完成相应的回调函数。
③Indicator方式:用户不能对控件操作,控件不能产生用户事件。
④Validate方式:控件产生用户事件前,先对桌面上控件的值进行检查,包括传递用户事件前数据有效性,看是否有效,其余功能和Hot项相似。
选抒Hot、Normal和Validate时.控件的外规一致,选择Indicator时.该控件可作为变量或参数值的回显窗。若选择常用方式Hot,则不需改动。
① Formal and Precision项可设置显示数椐的精度。
②DateSocket Binding项可使该数值控件和其它服务器数据进行绑定,并指定数据的读/写形式。
Control Appearance:控件外观显示设置,完成控件有关显示颜、显示形式的设置(显示或隐藏数值调整箭头和数值基数)。
Label Appearance:标签的外观设置。
①Label:输入控件名称,为该控忭在虚拟仪器面板上的名称。
② Label Raised:控件的文字说明部分是否突出显示。
③Size To Text:控件的文本框是否适应文字的长短。
④Label Style:设置控件显示文字的字体,大小、颜。
后三项均可釆用默认值。一般情况下使用通用函数来对该类控件进行操作。
5.2.2控件操作类函数
用户界面库函数的Controls/Graphs/Strip Charts类库函数包括以下7类:
①General Functions:一般函数;
②List (Label/Value) Control:列表控件;
③Text Boxes:文本框;
④Graphs and Strip Charts;图形控件;
⑤Pictures:图片;
⑥Canvas:画布;
Timers:定时器控件。
1、General Function(一般函数)
1) GetCtrlVal函数
GetCtrlVal函数的功能为从面板上获得控件参数值。该函数原形为:
int status = GetCtrlVal (int panelHandle, int controlID, void *value);
其中,参数panelHandle为控件所在的面板句柄;controlID为控件的名称;V alue为输出变量,放置返回的参数,以地址形式表示,如:& value 函数程序举例说明:
设仪器面板(panel)上有一个Numeric控件,该控件为用户参数输入框,控件的名称属性(ConstantName)为Channel,当操作者在该控件内输入参数4时,源程序可通过此函数读取该参数。其格式如下:
int channel
GetCtrlVal(panelHandle,PANEL_Channel,&channel);
函数运行调用后,变量channel的值为:channel=4。
2) GetCtrlAttribute 函数
GetCtrlAttribute函数的功能是获得控件的属性。该函数原形为
int status = GetCtrlAttribute (int panelHandle, int controlID,int controlAttribute, void *attributeValue);
其中,参数panelHandle为控件所在面板的句柄:controlID为控件的名称:controlAttribute 为控件属性的标识符;attributeValue为输出参数,输出控件的属性值。
函数程序举例说明:
int ctrlAttr
GetCtrlAttribute (mainpanel, MIANPANEL_QUIT,ATTrR_CMD_BOTTON_COLOR, &ctrlAttr); 调用该函数后,获得命令控件“Quit”的颜。
3) SetCtrlVal 函数
SetCtrlVal函数可将源程序中某个变量的值显示到面板上。该函数原形为:
int status =SetCtrlVal (int panelHandle, int controlID, Value);
其中.参数panelHandle为控件所在的面板句柄;controlID为控件的名称;Value为欲显示的变量,其类型由控件类型决定。
函数程序举例说明:
仪器面板(panel)上有一Numeric控件,该控件为数据显示窗口,控件的名称属性(ConstantName)为VOLTAGE,欲在该控件的窗口中显示某个变量的值时,可用以下的语句函数:
SetCtrlVal (panelHandle, PANEL_VOLTAGE, 5.0);
调用该函数后,显示窗口中显示5.0。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论