LabWindows/CVI(四):基本控件文本框、列表框使用及编程实例

2019/08/29 20:26
阅读数 1.7K

1、Text文本框
  Create ——> Text ——> String 、Text Message 、Text Box 控件

2、列表框(List Box)、树控件(Tree)、表格控件(Table)
  Create ——> Lists&Tables ——> List BOX 、Tree 、Table

控件功能函数:
  Library ——> User Interface Library ——> Controls/Grqaphs/Strip Charts ——> General Functions

    New Control    :NewCtrl    新建控件,穿件一个新控件,并返回该控件的ID值
    Duplicate Control    :DuplicateCtrl    复制控件,
    Discard Control    :DiscardCtrl    删除控件
    Get Active Control    :GetActiveCtrl    获得当前激活控件    
    Set Active Control    :SetActiveCtrl    激活制定控件
    Default Control Value    :DefaultCtrl    设置控件默认值,恢复指定面板控件的默认值
    Get Control Value    :GetCtrlVal    获取控件当前值
    Set Control Value    :SetCtrlVal    设置控件当前值
    Get Control Attribute    :GetCtrlAttribute    获取控件属性值
    Set Control Attribute    :SetCtrlAttribute    设置控件属性值
    Get Control Bounding Rectangle    :GetCtrlBoundingRect    获取控件的位置坐标

3、文本框使用编程实例

 

#include <formatio.h>
#include <cvirte.h>        
#include <userint.h>
#include "控件2.h"

static int panelHandle;

int main (int argc, char *argv[])
{
    if (InitCVIRTE (0, argv, 0) == 0)
        return -1;    /* out of memory */
    if ((panelHandle = LoadPanel (0, "控件2.uir", PANEL)) < 0)
        return -1;
    DisplayPanel (panelHandle);
    RunUserInterface ();
    DiscardPanel (panelHandle);
    return 0;
}
//“转移”按钮的回调函数
int CVICALLBACK transfer (int panel, int control, int event,
                          void *callbackData, int eventData1, int eventData2)
{
    int maxitems;
    int i;
    char label[10];
    char Tag[32];
    int value;
    int checked;
    static int j=0;
    switch (event)
    {
        case EVENT_COMMIT:
            //清除指定列表框
            ClearListCtrl(panelHandle,PANEL_TREE);
            //向文本框的末尾添加一行文本
            InsertTextBoxLine(panelHandle,PANEL_TEXTBOX,-1,"转移并显示目录");
            j=0;
            //获得列表框项目的数目
            GetNumListItems(panelHandle,PANEL_LISTBOX,&maxitems);
            for(i = 0 ; i < maxitems; i++)
            {
                //获得列表框中指定项目的选中状态                
                //IsListItemChecked(panelHandle,PANEL_LISTBOX,i,&checked);
                IsListItemChecked(panelHandle,PANEL_LISTBOX,i,&checked);
                //如果该项目被选中,则执行以下操作
                if(checked)
                {
                    j=j+1;
                    //获得指定索引项目的value值
                    GetValueFromIndex(panelHandle,PANEL_LISTBOX,i,&value);
                    //获得指定索引项目的标题
                    GetLabelFromIndex(panelHandle,PANEL_LISTBOX,i,label);
                    //将选中的项目插入到指定的树控件
                    InsertTreeItem(panelHandle,PANEL_TREE,VAL_SIBLING,j-2,VAL_NEXT,label,"",Tag,value);
                }
            }
            break;
    }
    return 0;
}
//“清除已选目录”按钮的回调函数
int CVICALLBACK clear (int panel, int control, int event,
                       void *callbackData, int eventData1, int eventData2)
{
    switch (event)
    {
        case EVENT_COMMIT:
            //清除控件的内容
            ClearListCtrl(panelHandle,PANEL_TREE);
            //向文本框末尾插入一行文本
            InsertTextBoxLine(panelHandle,PANEL_TEXTBOX,-1,"清除已选目录");
            break;
    }
    return 0;
}
//“插入”按钮的回调函数
int CVICALLBACK insert (int panel, int control, int event,
                        void *callbackData, int eventData1, int eventData2)
{
    char newitem[10];
    switch (event)
    {
        case EVENT_COMMIT:
            //向文本框末尾插入一行文本
            InsertTextBoxLine(panelHandle,PANEL_TEXTBOX,-1,"添加目录");
            //得到指定String控件的值
            GetCtrlVal(panel,PANEL_STRING_INSERT,newitem);
            //向列表框插入新的项目
            InsertListItem(panelHandle,PANEL_LISTBOX,-1,newitem,0);
            break;
    }
    return 0;
}
//“移除”按钮的回调函数
int CVICALLBACK delete (int panel, int control, int event,
                        void *callbackData, int eventData1, int eventData2)
{
    int maxitems;
    char removeitem[10];
    int i;
    char label[10];
    switch (event)
    {
        case EVENT_COMMIT:
            InsertTextBoxLine(panelHandle,PANEL_TEXTBOX,-1,"移除目录");
            GetCtrlVal(panelHandle,PANEL_STRING_DELETE,removeitem);
            GetNumListItems(panelHandle,PANEL_LISTBOX,&maxitems);
            for(i = 0 ; i < maxitems ; i++ )
            {
                //获得指定索引的项目标题
                GetLabelFromIndex(panelHandle,PANEL_LISTBOX,i,label);
                //判断该标题是否和指定的内容相一致
                if(CompareStrings(label,0,removeitem,0,1)==0)
                {
                    //删除列表框指定项目
                    DeleteListItem(panelHandle,PANEL_LISTBOX,i--,1);
                    maxitems--;
                }
            }
            break;
    }
    return 0;
}
//“退出”按钮的回调函数
int CVICALLBACK QuitCallback (int panel, int control, int event,
                              void *callbackData, int eventData1, int eventData2)
{
    switch (event)
    {
        case EVENT_COMMIT:
            QuitUserInterface(0);
            break;
    }
    return 0;
}
文本框使用编程实例

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部