LabVIEW Tree Control使用说明
mfc tree control用法
mfc tree control用法MFC(Microsoft Foundation Classes)是微软提供的一组C++类库,用于快速开发Windows桌面应用程序。
MFC提供了许多控件类,其中包括Tree Control (树控件),用于展示树形结构的数据。
下面是一个基本的MFC Tree Control的用法示例:1. 在对话框资源中添加一个Tree Control控件,并为它分配一个ID。
2. 在对话框类的头文件中添加一个成员变量来引用Tree Control控件,如CTreeCtrl m_treeCtrl。
3. 在OnInitDialog()函数中获取Tree Control控件的指针,并进行初始化设置。
示例代码如下:```cppBOOL CMyDialog::OnInitDialog(){CDialog::OnInitDialog();// 获取Tree Control控件指针CTreeCtrl* pTreeCtrl = (CTreeCtrl*)GetDlgItem(IDC_TREE1);// 设置根节点HTREEITEM hRootItem = pTreeCtrl->InsertItem(TEXT("Root"));// 添加子节点HTREEITEM hChildItem1 = pTreeCtrl->InsertItem(TEXT("Child 1"), hRootItem);HTREEITEM hChildItem2 = pTreeCtrl->InsertItem(TEXT("Child 2"), hRootItem);// 展开根节点pTreeCtrl->Expand(hRootItem, TVE_EXPAND);return TRUE;}```4. 可以通过使用CTreeCtrl类提供的方法来进行其他操作,例如添加节点、删除节点、获取节点信息、设置节点图标等。
mfc tree control 高级用法
mfc tree control 高级用法MFC Tree Control的高级用法MFC Tree Control是Microsoft Foundation Classes(MFC)中的一个重要控件,用于在Windows应用程序中显示树状结构的数据。
除了基本的显示和展开折叠功能外,MFC Tree Control还提供一些高级用法,以增强用户体验和数据展示的灵活性。
一、自定义绘制节点MFC Tree Control允许开发人员自定义绘制每个节点的外观。
通过覆盖基类的虚拟函数,可以在绘制节点时进行自定义操作。
例如,你可以更改节点的背景色、文字颜色,甚至绘制自定义图标来表示不同的节点类型。
二、节点排序MFC Tree Control的默认行为是按照添加节点的顺序来显示它们。
但是,如果你希望有特定的节点排序规则,你可以通过重写比较函数来实现。
通过在节点比较函数中定义自己的排序逻辑,你可以按照节点值、节点类型或其他自定义标准对节点进行排序。
三、拖放支持MFC Tree Control还提供了拖放支持,使用户能够方便地重新组织树状结构。
你可以将节点拖动到其他节点之间,甚至移动节点到不同的树控件中。
通过处理拖放事件,你可以自定义节点移动的规则和行为。
四、节点编辑MFC Tree Control允许用户在展示的树状结构中编辑节点的文本。
通过启用节点编辑功能,用户可以直接在节点上双击并修改文本。
你可以在编辑结束后响应事件,并根据用户的修改来更新数据。
总结:MFC Tree Control提供了许多高级用法来增强树状结构数据的展示效果和用户交互体验。
自定义绘制节点、节点排序、拖放支持和节点编辑功能都为开发人员提供了灵活的方式来定制树控件。
通过充分利用这些高级用法,你可以创建出功能强大且用户友好的树状数据展示组件。
MFC_VC_Tree_Control控件使用 详解
MFC Tree Control控件详解1.InsertItem 添加节点参数: 文字,图标,父节点返回: HTREEITEM示例: 添加一系列节点HTREEITEM hItem = m_Tree.InsertItem("root",NULL,NULL);///root就是节点的标题int i,j;for (i=0;i<4;i++){HTREEITEM hSubItem = m_Tree.InsertItem("item",NULL,NULL,hItem);for (j=0;j<3;j++){m_Tree.InsertItem("subitem",NULL,NULL,hSubItem);}}InsertItem函数的第一个参数就是设置他的节点标题2.ModifyStyle 设置风格参数: 取消的风格,增加的风格示例: 在对话框初始化时设置风格BOOL CMfc1Dlg::OnInitDialog(){//...m_Tree.ModifyStyle(NULL,TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESA TROOT); }3.DeleteItem 删除节点4.DeleteAllItems 删除全部节点5.Expand 展开/收缩节点参数: 节点HTREEITEM,展开/收缩示例:m_Tree.Expand(hItem,TVE_EXPAND);/////////////////////////////////////////////////////////CTreeCtrl的概述cc++vcCTreeCtrl在三种不同情况下创建的方式1、如果要在对话框窗口上创建树形控件,你需要在对话框类中定义一个CTreeCtrl类型的成员变量。
2、如果树形控件是一个子窗口,你可以使用CTreeCtrl::Create()来构建树形空间对象。
labview的使用方法
labview的使用方法LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是一种LabVIEW (Laboratory Virtual Instrument Engineering Workbench)是一种图形化编程语言,主要用于数据采集、仪器控制、数据分析和测试等方面。
以下是使用LabVIEW的基本步骤:1. 安装LabVIEW软件:首先需要从官方网站下载并安装LabVIEW软件。
安装完成后,启动LabVIEW。
2. 创建新项目:在LabVIEW启动界面中,选择“新建”或“打开”一个已有的项目。
如果创建新项目,可以选择不同的模板,如“VI(Virtual Instrument)”、“Control Design”等。
3. 设计前面板(Front Panel):前面板是用户与程序交互的界面,可以放置各种控件(如按钮、滑动条、图表等)来显示数据和接收用户输入。
在左侧的“控件”面板中选择所需的控件,然后将其拖放到前面板上进行布局。
4. 编写程序代码(Block Diagram):在右侧的“块图”面板中编写程序代码。
LabVIEW使用图形化的编程方式,将各种功能模块以图标的形式表示,通过连线连接各个模块来实现程序逻辑。
常用的功能模块包括数学运算、数据处理、信号处理、文件操作等。
5. 调试和运行程序:在编写完程序代码后,需要进行调试以确保程序的正确性。
可以使用断点、单步执行等功能进行调试。
调试完成后,点击工具栏上的“运行”按钮或按F5键运行程序。
6. 保存和导出项目:在完成程序设计和调试后,需要将项目保存为.vi文件。
此外,还可以将程序导出为其他格式,如可执行文件(.exe)、动态链接库(.dll)等。
7. 部署和发布程序:将生成的可执行文件或动态链接库部署到目标计算机上,即可实现程序的功能。
如果需要将程序发布给其他用户,可以将项目打包成安装包或生成Web服务等形式。
树形控件CTreeCtrl的使用详解(一)
树形控件CTreeCtrl的使用详解(一)树型视的三个结构TVINSERTSTRUCT、TVITEM、NMTREEVIEWTVINSERTSTRUCT包含添加新项到树形视控件所使用的信息。
这个结构被TVM_INSERTITEM消息使用。
这个结构与TV_INSERTSTRUCT结构是一样的,但它已经按当前的命名习惯重命名了。
typedef struct tagTVINSERTSTRUCT {HTREEITEM hParent;HTREEITEM hInsertAfter;#if (_WIN32_IE >= 0x0400)union{TVITEMEX itemex;TVITEM item;} DUMMYUNIONNAME;#elseTVITEM item;#endif} TVINSERTSTRUCT, FAR *LPTVINSERTSTRUCT;成员hParent父项的句柄。
如果这个成员的值是TVI_ROOT或NULL,这项将被作为树形控件的根插入。
hInsertAfter插入的新项之后的项的句柄。
或是下列值之一:值意味TVI_FIRST在列表的开始插入项TVI_LAST在列表的最后插入项TVI_ROOT作为一个根项添加TVI_SORT以字母顺序插入项itemex版本4.71。
TVITEMEX包含关于项添加的信息。
itemTVITEM包含关于项添加的信息。
需求Windows NT/2000:需要Windows NT 3.51或更高版本。
Windows 95/98:需要Windows 95或更高版本。
Header:定义在commctrl.h。
TVITEM指定或接收树形视项的属性。
这个结构与TV_ITEM结构一样,但它已经被当前命名协议重新命名了。
新的应用程序应该使用这个结构。
typedef struct tagTVITEM{UINT mask;HTREEITEM hItem;UINT state;UINT stateMask;LPTSTR pszText;int cchTextMax;int iImage;int iSelectedImage;int cChildren;LPARAM lParam;} TVITEM, FAR *LPTVITEM;成员mask指出其它的结构成员哪些包含有效数据的标记数组。
第九章 Tree Control的使用
第九章 Tree Control的使用Tree Control是最常用的Windows控件之一,在其他语言中,称为“Tree View”等,ABAP 的Tree Control能完成相似的功能,本章主要介绍以下实例:(1)实现一个简单的Tree Control;(2)建立有数据表接口的Tree Control对象;(3)通过右键菜单完成Tree Control节点的增删修改等功能;(4)Tree Control对象与ALV Grid对象关联,实现在双击Tree节点时,变更ALV Grid 的显示。
各例子简捷独立,先简单后复杂。
9.1 简单的Tree Control实例如图9-1所示,本例将实现以下功能:(1)建立一个以国家、城市、城区三层的Tree Control对象(固定数据);(2)当双击某个节点时,在文本框显示点的节点的KEY值和节点文本值。
图9-1实现步骤如下(前两步为基本功能,不再详细描述):(1)建立一个ABAP程序;(2)使用屏幕制作器,建立Screen。
z添加“定制控制”对象;z添加两个文本框,存放节点KEY值和节点文本值。
(3)建立程序。
z处理窗口调用,退出等基本功能;z创建窗口定制对象,Tree Control对象,测试运行时能看到TREE区域z实现Tree节点的创建,测试运行,能看到Tree的所有节点;z定义对象,建立双击方法,并将双击方法分配Tree对象,实现双击事件。
建立好的屏幕和对象界面如图9-2所示。
图9-2元素清单如图9-3所示。
图9-3逻辑流程序:*PBO显示屏幕前的处理PROCESS BEFORE OUTPUT.MODULE STATUS_0100.*PAI用户输入后的处理PROCESS AFTER INPUT.MODULE USER_COMMAND_0100.主程序:REPORT YTEST33.*功能码返回值DATA: OK_CODE TYPE SY-UCOMM,SAVE_OK TYPE SY-UCOMM.*定制对象DATA: WA_CONTAINER TYPE SCRFNAME VALUE 'TREE',*客户对象WA_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER, WA_TREE TYPE REF TO CL_GUI_SIMPLE_TREE.*NODE 节点表DATA: NODE_TABLE LIKE TABLE OF MTREESNODE,*节点NODE1 TYPE MTREESNODE.*定义内表,变量需要传递,不加HEADER LINEDATA WA_SPFLI TYPE TABLE OF SPFLI.*当双击时取得节点KEY值与节点文本值变量DATA: NODEKEY(200) VALUE 'NODE',NODETEXT(200) VALUE 'NONE'.*定义对象,定义对象的双击方法,用于将该对象双击方法分配到树双击事件 CLASS LCL_APPLICATION DEFINITION DEFERRED.*---------------------------------------------------------------------* * CLASS lcl_application DEFINITION*---------------------------------------------------------------------* * 对象定义*---------------------------------------------------------------------* CLASS LCL_APPLICATION DEFINITION.PUBLIC SECTION.*自定义双击方法,参数为节点关键字METHODS HANDLE_NODE_DOUBLE_CLICKFOR EVENT NODE_DOUBLE_CLICKOF CL_GUI_SIMPLE_TREEIMPORTING NODE_KEY.ENDCLASS. "*---------------------------------------------------------------------* * CLASS lcl_application IMPLEMENTATION*---------------------------------------------------------------------* * 对象方法实现*---------------------------------------------------------------------* CLASS LCL_APPLICATION IMPLEMENTATION.METHOD HANDLE_NODE_DOUBLE_CLICK.* 当双击时弹出信息窗口,调试用* MESSAGE I208(00) WITH 'double'.*取得KEY值,在窗口显示NODEKEY = NODE_KEY.*从节点内表中按关键字读取单个节点READ TABLE NODE_TABLE WITH KEY NODE_KEY = NODE_KEY INTO NODE1.*将节点文本在窗口中显示NODETEXT = NODE1-TEXT.ENDMETHOD. "HANDLE_NODE_DOUBLE_CLICK ENDCLASS. "lcl_application IMPLEMENTATION*自定义定义对象实例DATA: G_APPLICATION TYPE REF TO LCL_APPLICATION.START-OF-SELECTION.CREATE OBJECT G_APPLICATION.* 直接调用窗口,在窗口PBO分配双击对象CALL SCREEN 100.*&---------------------------------------------------------------------* *& Module STATUS_0100 OUTPUT*&---------------------------------------------------------------------* * text*----------------------------------------------------------------------* MODULE STATUS_0100 OUTPUT.* SET PF-STATUS 'STATUS1'.IF WA_CUSTOM_CONTAINER IS INITIAL.PERFORM CREATE_TREE.ENDIF.ENDMODULE. " STATUS_0100 OUTPUT*&---------------------------------------------------------------------* *& Module USER_COMMAND_0100 INPUT*&---------------------------------------------------------------------* * 用户交互*----------------------------------------------------------------------* MODULE USER_COMMAND_0100 INPUT.SAVE_OK = OK_CODE.CLEAR OK_CODE.CASE SAVE_OK.WHEN 'EXIT'.LEAVE PROGRAM.ENDCASE.ENDMODULE. " USER_COMMAND_0100 INPUT*&---------------------------------------------------------------------* *& Form CREATE_TREE*&---------------------------------------------------------------------* * 创建树及子节点*----------------------------------------------------------------------* * --> p1 text* <-- p2 text*----------------------------------------------------------------------* FORM CREATE_TREE .*事件内表及单个事件对象DATA: EVENTS TYPE CNTL_SIMPLE_EVENTS,EVENT1 TYPE CNTL_SIMPLE_EVENT.*建立定制控制对象CREATE OBJECT WA_CUSTOM_CONTAINEREXPORTINGCONTAINER_NAME = WA_CONTAINER.*建立树对象CREATE OBJECT WA_TREEEXPORTING* LIFETIME =PARENT = WA_CUSTOM_CONTAINER* SHELLSYLE =NODE_SELECTION_MODE = CL_GUI_SIMPLE_TREE=>NODE_SEL_MODE_SINGLE * HIDE_SELECTION =* NAME =* EXCEPTIONS* LIFETIME_ERROR = 1* CNTL_SYSTEM_ERROR = 2* CREATE_ERROR = 3* FAILED = 4* ILLEGAL_NOCE_SELECTION_MODE = 5* OTHERS = 6.IF SY-SUBRC <> 0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.*开始建立以国家-> 城市->城区 三层 的树CLEAR NODE1.*节点关键字NODE1-NODE_KEY = '国家'.*第一层CLEAR NODE1-RELATKEY.CLEAR NODE1-RELATSHIP.*是文件夹NODE1-HIDDEN = ''.NODE1-DISABLED = ''.NODE1-ISFOLDER = 'X'.*不带ICONCLEAR NODE1-N_IMAGE.CLEAR NODE1-EXP_IMAGE.CLEAR NODE1-EXPANDER.NODE1-TEXT = '中国'.APPEND NODE1 TO NODE_TABLE.*二层节点CLEAR NODE1.NODE1-NODE_KEY = '城市北京'.*上层关系NODE1-RELATKEY = '国家'.NODE1-RELATSHIP = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD. NODE1-HIDDEN = ''.NODE1-DISABLED = ''.NODE1-ISFOLDER = 'X'.CLEAR NODE1-N_IMAGE.CLEAR NODE1-EXP_IMAGE.CLEAR NODE1-EXPANDER.NODE1-TEXT = '北京'.APPEND NODE1 TO NODE_TABLE.CLEAR NODE1.NODE1-NODE_KEY = '城市上海'.NODE1-RELATKEY = '国家'.NODE1-RELATSHIP = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD. NODE1-HIDDEN = ''.NODE1-DISABLED = ''.NODE1-ISFOLDER = 'X'.CLEAR NODE1-N_IMAGE.CLEAR NODE1-EXP_IMAGE.CLEAR NODE1-EXPANDER.NODE1-TEXT = '上海'.APPEND NODE1 TO NODE_TABLE.CLEAR NODE1.NODE1-NODE_KEY = 'KEY 崇文区'.NODE1-RELATKEY = '城市北京'.NODE1-RELATSHIP = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD. NODE1-HIDDEN = ''.NODE1-DISABLED = ''.NODE1-ISFOLDER = ''.*图标,可运行SHOWICON查阅NODE1-N_IMAGE = '@9Y@'.NODE1-EXP_IMAGE = '@9Y@'.CLEAR NODE1-EXPANDER.NODE1-TEXT = '崇文区'.APPEND NODE1 TO NODE_TABLE.CLEAR NODE1.NODE1-NODE_KEY = 'KEY 西城区'.NODE1-RELATKEY = '城市北京'.NODE1-RELATSHIP = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD.NODE1-HIDDEN = ''.NODE1-DISABLED = ''.NODE1-ISFOLDER = ''.NODE1-N_IMAGE = '@DF@'.NODE1-EXP_IMAGE = '@DF@'.CLEAR NODE1-EXPANDER.NODE1-TEXT = '西城区'.APPEND NODE1 TO NODE_TABLE.CLEAR NODE1.NODE1-NODE_KEY = 'KEY 闵行区'.NODE1-RELATKEY = '城市上海'.NODE1-RELATSHIP = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD.NODE1-HIDDEN = ''.NODE1-DISABLED = ''.NODE1-ISFOLDER = ''.NODE1-N_IMAGE = '@NL@'.NODE1-EXP_IMAGE = '@NL@'.CLEAR NODE1-EXPANDER.NODE1-TEXT = '闵行区'.APPEND NODE1 TO NODE_TABLE.*按照节点内容添加节点CALL METHOD WA_TREE->ADD_NODESEXPORTINGTABLE_STRUCTURE_NAME = 'MTREESNODE'NODE_TABLE = NODE_TABLE* EXCEPTIONS* ERROR_IN_NODE_TABLE = 1* FAILED = 2* DP_ERROF = 3* TABLE_STRUCTURE_NAME_NOT_FOUND = 4* OTHERS = 5.IF SY-SUBRC <> 0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.*定义双击事件EVENT1-EVENTID = CL_GUI_SIMPLE_TREE=>EVENTID_NODE_DOUBLE_CLICK. EVENT1-APPL_EVENT = 'X'.APPEND EVENT1 TO EVENTS.*添加事件内表CALL METHOD WA_TREE->SET_REGISTERED_EVENTSEXPORTINGEVENTS = EVENTS* EXCEPTIONS* CNTL_ERROR = 1* CNTL_SYSTEM_ERROR = 2* ILLEGAL_EVENT_COMBINATION = 3* OTHERS = 4.IF SY-SUBRC <> 0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.*将已定义的双击事件分配至树对象SET HANDLER G_APPLICATION->HANDLE_NODE_DOUBLE_CLICK FOR WA_TREE. ENDFORM. " CREATE_TREE9.2 建立有数据表接口的Tree Control对象先从数据表读取结构,并按照数据关系建立Tree Control,如图9-4所示。
LabVIEW_Tree_Control使用说明
三.常见操作的 Add Item 方法,如图所示:
如果只是增加一个节点作为树的最后一个节点,可以使用 Add Item To End 方法。
3.2 删除节点
使用控件的 delete Item 方法
Delete children 代表删除父节点是否要删除子节点。如果不删除子节点,子节点将往上 移动一层替代原父节点的位置。如果该节点没有子节点而要求删除,将会产生错误。所以删 除时最好先检测是否有子节点
一.控件简介
LabVIEW 的 Tree Control 控件以树型结构显示信息,每个节点带细节描述列。可以显 示该节点的其它信息。如下图所示
图 1 . 控件外观
二.控件的常用属性、方法、事件
控件的常用属性、方法、事件可以很方便的从 LabVIEW 的帮助或者编写简单的 Demo 获取,这里就不再赘述。 只是有一点需要注意, 控件属性结构上显示的字符是控件的 Left Cell String, 可以重复, 再控件内部管理这些节点是用 Tag 属性,该属性为字符串类型,不可重复,如果增加节点时 不设置该属性,LabVIEW 会默认将 Left Cell String 作为 Tag,遇到重复的情况以”下划线加 数字”区分。如“张三_1” 。在控件的方法、事件中获取到节点值都是控件的 Tag。
3.7
Tree Control 界面显示内容操作
前面提到了该控件内部管理树是通过 Tag 管理,界面显示与 Tag 无关,Tree Control 管理 界面显示的内容类似 Grid,每一个格子为一个单元,可以设置其属性,也可读出值。
3.7.1 读取 left Cell String 或 Child Text 的值
程序中要展开,收合节点使用 Open/Close 方法
Labview编程工具:详细说明
Labview编程工具:详细说明编程工具:详细信息当鼠标移到前面板或程序框图的对象上时,光标会发生变化- 这就是提示你在某些特定位置发生的变化。
下文介绍了这些光标的模式或工具。
使用LabVIEW提供的工具可以新建、修改和调试VI。
工具是鼠标光标的特殊操作模式。
鼠标的操作模式对应于所选工具的图标。
LabVIEW将根据鼠标的当前位置选择相应的工具。
图1.工具选板在工具选板中可手动选择所需工具。
选择查看?工具选板呈现工具选板自动工具选择器工具选板的第一项为自动工具选择按钮。
它被选中时,LabVIEW 将根据光标的当前位置自动选择工具。
如果需要关闭自动工具,可以取消选择或者选择选板中的其它项。
如果将LabVIEW工具比作家用工具,下列的单独工具就好比螺丝刀、刀片、螺丝锥,而自动工具选择器就是能够完成所有任务的瑞士军刀。
图2.单独工具和自动工具选择器LabVIEW常用工具下列为LabVIEW中一些较为常见的工具。
请注意当选中自动选择工具按钮时,鼠标会变为下列工具之一来完成LabVIEW中最常见的任务。
操作工具当光标变成左图所示的图标时,表明正在使用连线工具。
操作工具用于改变控件的值。
例如,在图2中,通过操作值工具移动“水平指针滑动杆”。
当鼠标移至指针上方时,光标会变为操作工具。
图3. 使用操作工具操作工具大多用于前面板窗口,但也可用于在程序框图窗口中改变布尔常量的值。
定位工具当光标变成左图所示的图标时,表明正在使用定位工具。
定位工具用于选择或对象调整大小。
例如,在图3中,定位工具选择数值控件测量次数。
选择对象后,可以移动、复制或者删除该对象。
当鼠标移至对象的边界时,会自动转换为定位工具。
图4.使用定位工具选择对象如果鼠标移至对象的调节尺寸节点上,光标模式将显示为该对象可以被改变大小,如图 4所示。
注意:当光标移至“XY 图”角上的调节尺寸节点时,光标将变成双箭头。
定位工具既可以用在前面板窗口中,也可以用在程序框图中。
Tree控件的使用
Tree控件的使用本节将重点讨论LabVIEW 中的Tree 控件,也许是控件本身的使用比较麻烦,导致很多程序员不愿意使用该控件。
其实在大多数的应用程序中均可以看到Tree 的身影,如Windows 操作系统中的资源管理器左侧的文件列表,通常Tree 控件可以用来显示一些有组织的、分类明确的数据。
1.1 编辑Tree 控件的外观Tree 控件位于LV 的控件选板List&Table 子选板中,如图 1 所示。
从背面板可以看出Tree 实质上是一种字符串(String)类型,这难免会让人费解:如何将前面板大量的条理性的数据与String 对应呢?图 1 Tree 控件选择工具选板中的Edit Text 工具,可以直接在Tree 控件中输入数据。
通过Tree 控件的右键快捷菜单Visible Items 菜单项,可以改变Tree 控件的显示外观,如图 2 所示。
可以逐一勾选/不勾选该菜单项中的菜单,就明确了各个菜单项对应的含义。
图 2 改变Tree 控件的显示外观在Visible Items 中有一个Symbols 菜单项,从外观上看勾选或不勾选该选项没有什么区别。
原来,LabVIEW 允许对Tree 中的每一行指定一个符号,显示在行首。
要显示该符号首先需要勾选Visible ItemsSymbols 选项,其次在某一行上右击弹出的快捷菜单上选择Item Symbol 菜单项,并选择一个符号。
如图 3 所示。
LabVIEW 提供了42 种符号可供选择,其中第1 种为空(默认值,因此前面在勾选Visible ItemsSymbols 后看不到变化)。
可以通过该方式为每一行添加各种不同的符号。
图 3 选择Symbol在Windows 资源管理器中,我们可以看到Tree 是能够显示层级关系的。
这一点可以通过选择右键快捷菜单中的Indent Item 和Outdent Item 实现,在第图中的3 行上右击选择Indent Item,则第3 行变成了第2 行的子行,如图4 所示。
LabVIEW使用指南从入门到精通
LabVIEW使用指南从入门到精通LabVIEW使用指南:从入门到精通LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是一种图形化编程语言和开发环境,用于快速创建数据采集、仪器控制和实时数据处理应用程序。
它被广泛应用于科学实验室、工业自动化以及教育领域。
本文将从入门到精通,为您提供LabVIEW的使用指南。
一、LabVIEW入门1. 安装LabVIEW软件在官方网站下载并安装LabVIEW软件。
根据自己的操作系统选择相应的版本,并按照安装向导进行完成。
2. 熟悉LabVIEW界面打开LabVIEW软件后,您将看到一个图形化的编程界面。
界面中包含了工具栏、项目资源、前面板和块图等各个部分。
熟悉这些部分的作用和使用方法,是学习LabVIEW的第一步。
3. 创建并运行第一个程序在LabVIEW中,程序由前面板(Front Panel)和块图(Block Diagram)组成。
前面板是用户界面,用于显示和控制程序,而块图是程序的实际运行部分。
通过拖拽控件和连接线,您可以在前面板和块图中进行图形化的编程。
尝试创建一个简单的程序,并通过点击“运行”按钮来运行它。
这将帮助您了解LabVIEW的基本工作原理。
二、LabVIEW基础1. 数据类型和变量LabVIEW支持多种数据类型,例如数字、字符串、布尔值等。
了解这些数据类型的特点和使用方法,能够帮助您更好地处理数据。
在LabVIEW中,使用变量来存储和处理数据。
变量是一种命名的存储位置,用于存储特定类型的数据。
学会如何创建和使用变量,是掌握LabVIEW基础的重要一步。
2. 控制结构控制结构是LabVIEW中用于控制程序流程的重要组成部分。
常用的控制结构有循环结构、条件结构和事件结构等。
了解这些控制结构的使用方法,能够帮助您实现复杂的程序逻辑。
3. 数据采集与仪器控制LabVIEW具有强大的数据采集和仪器控制功能。
用LabVIEW控制你的仪器
用LabVIEW控制你的仪器用 LabVIEW 控制你的仪器2013 年 11 月 17 日1 安装 LabVIEW你可以去 NI ( National Instrumen ts , 美国国家仪器有限公司, 私企) 的官网上下载 LabVIEW ( Lab oratory Virtual Instrumen tEngineeringW orkb enc h ,实验室虚拟仪器工程平台)试用版,或者购买它。
LabVIEW 本身只是众多计算机语言中的一种, 如果你喜欢, 完全可以用 C 、 VB 、 MA TLAB 或其它语言来实现下文的例子。
事实上, 实验室里的 Lak eShore 温度控制器有官方提供的基于 Ja v a 的数据采集程序,Keithley 2600 系列源表本身内置了基于 Ja v a 的测试程序(值得一提的是,它不像 2400 系列源表那样支持 SCPI , 而是采用一个基于Lua 的脚本语言) 。
NF 的锁相放大器说明书里仅仅提供了 VB 的例子。
本文虽然只介绍LabVIEW ,但还是希望能够涉及一些更深层次的东西。
首先, 我下载了 LabVIEW 2013 评估版, 也就是 ev aluation v ersion(图 1 和图 2 ) 。
图 1: 下载页12 计算 1 + 1 2图 2: 下载中图 3: 报错下载有点费时, 然后安装它, 也需要一点时间。
快结束的时候报了一个错 (图 3 ) 。
点 Install Supp ort 没反应, 所以点 Decline Support 。
安装结束后会提示重启电脑, 但是这不是必须的。
可以直接打开程序, 不过有些工具打不开。
看一下界面(图 4 ) 。
2 计算 1 + 1接下来写一个简单的小程序, 实现 1+12 的功能。
LabVIEW 的程序或子程序叫做 VI virtual instrumen t , 你可以这样创建它: 在菜单栏里选择 File! New VI , 或者直接“ Ctrl + N ” 。
labview使用技巧
本文为LabVIEW内部交流资料,来自网络,特此说明开发机上激活以后,如果开发机升级了或者换了或者增加新的配置了等等,难道要重新购买一套8.2吗?回答=更改了配置,那么lisence manager里的机器码肯定会变,所以需要重新向NI申请激活码激活.NI的IVI驱动的来源?回答=由于NI开发的IVI驱动程序库已经包含了仪器的Class Driver,因此,程序员只要按照IVI的规范开发自己仪器的Specific Driver,就可以实现仪器的互换性。
LV和CVI的专用驱动可以从NI的网站下载,源代码是用c编写的32位的DLL形式,这就保证驱动可以直接在你的开发环境中使用(LV,CVI,VC等)。
在运行过程中LabVIEW能否添加控件?回答=不能,只能在编辑状态是做。
不过可以事先多创建几个控件,然后隐藏。
再需要使用的时候使用属性节点来操作。
编写的LV的GPIB通讯程序,从示波器读取数据。
单独可以正常执行,但放置在一个事件结构的一个WHILE循环里时,运行程序后,程序会变得不相应,而且前面板不可控制。
回答=查看客户程序,GPIB程序并没什么问题,但是作为一个子程序放在事件结构里就会存在问题,而且子程序运行时,主界面默认的是不响应的。
如果要解决这个问题,需要选择事件结构编辑面板最下方有一个默认选项,用于设置是否在事件结构执行完成之前锁定前面板,默认为锁定,取消即可。
IVI的分类。
回答=因为所有的仪器不可能具有相同的功能,因此不可能建立一个单一的编程接口。
因此,IVI的驱动分为两类。
(1) 类驱动程序(Class Drive):它们是在特定类中编写仪器软件的标准接口。
这意味着软件开发者能重复使用他们的软件系统而不会由于低层硬件更改而被迫重新测试软件系统。
目前,IVI驱动程序库可用于下列几类仪器:示波器数字化仪表、开关多路复用器、数字万用表、任意波形发生器函数发生器等。
(2) 设备类驱动程序(Specific Drive):每种牌号和类型的仪器均有相应的专用驱动程序。
labview control can 用法
labview control can 用法
LabVIEW Control 是一种用于在 LabVIEW 软件中控制各种硬
件设备的功能强大的工具。
该工具可实现数据采集、信号生成、运动控制、通信接口等功能,使用户能够与各种传感器、执行器及其他外部设备进行交互。
以下是使用 LabVIEW Control 的一般步骤:
1. 打开 LabVIEW 软件,并创建一个新的 VI(视觉化工具)文件。
2. 在 Block Diagram(块图)中,选择和拖放合适的控件(例
如按钮、滑块、数字显示等)来表示你想要控制的设备或参数。
3. 配置每个控件的属性,包括名称、数据类型、范围等。
你可以通过右键单击控件,选择属性窗口来进行设置。
4. 通过连接控件和其他图形界面元素,以及适当的数据处理和算法,为控制器添加功能。
5. 通过设定事件(例如,当按钮按下或值改变时)和触发器,来响应用户输入并触发相应的控制操作。
6. 在 Front Panel(前面板)上调整控件的位置、大小和布局,以便用户可以方便地进行操作。
7. 点击运行按钮以启动 VI,然后可以通过控制面板上的控件
与外部设备进行交互。
8. 进行必要的测试和调试,确保控制器的功能正常,并对其进行优化。
需要注意的是,LabVIEW Control 的具体用法可能因为所控制
的设备和应用领域的差异而有所不同。
因此,在使用
LabVIEW Control 时,可能需要参考相关设备的文档和LabVIEW 的帮助文档,以获取更详细的信息和指导。
LabVIEW使用技巧锦集
LabVIEW使用技巧锦集LabVIEW使用技巧集锦一本地变量(local variable)与属性节点(property node)的不同我们知道在程序框图中,本地变量或属性节点无须与control(控制器)/indicator(指示器)直接连线就可用来传递“控制器”/“指示器”中的数值。
当然,属性节点还有非常多的使用方法,所以对本地变量与属性节点之间不同的讨论也仅限于传递数值这个特性上。
实际上,虽然它们从传递数值这个特性上有相同之处,但本质上还有许多不同的地方,只有充分了解它们之间的差异,才能有效、合理的在程序中使用它们。
<!--[if !supportLists]-->1、 <!--[endif]-->内存本地变量:建立本地变量实质就是对“控制器”/“指示器”中数据进行复制(copy),所以要占用内存,当为数组建立多个本地变量时,会占用大量的内存。
操作行为是读数据(Read)或写数据(Write)属性节点:建立属性节点实质上是对“控制器”/“指示器”中数据进行查询或置入,不会占用内存。
因为在部件创建时已经为此参数分配好了内存,多少有些像VB中的属性设置。
操作行为是查询(Query)数据或置入(Set)数据。
<!--[if !supportLists]-->2、 <!--[endif]-->执行速度本地变量:由于本地变量是对内存操作,所以运行速度很快。
属性节点:相对于本地变量来讲,属性节点的效率是很低的,或者说更占用CPU 的资源。
下面通过两个测试图来进一步说明二者之间的差异。
在图1中,我们使用一个for循环对Numeric的本地变量写10000次数据,并测量运行的时间,探针[1]显示出程序运行时间是:4mS。
图1 本地变量的10000次运行时间然后,我们将图1中的本地变量换成一个属性节点,见图2。
我们会看到10000次的操作运行时间是:2472mS。
labview完整教程详细解答
labview完整教程详细解答第一讲:认识L a b v i e w简介在开始菜单里找见点击打开,会出现如下界面:从File>>NewVI或者从右半部分中的New>>BlankVI都可以打开如下界面:上图中前图是虚拟仪器的前面板,是用户使用的人机界面,后面的是程序框图界面(即后面板)。
在LabVIEW的用户界面上,应特别注意它提供的操作模板,包括工具(Tools)模板、控制(Controls)模板和函数(Functions)模板。
这些模板集中反映了该软件的功能与特征。
下面我们来大致浏览一下。
工具模板(T oolsPalette )该模板提供了各种用于创建、修改和调试VI程序的工具。
如果该模板没有出现,则可以在Windows菜单下选择ShowT oolsPalette 命令以显示该模板。
当从模板内选择了任一种工具后,鼠标箭头就会变成该工具相应的形状。
当从Windows菜单下选择了ShowHelpWindow功能后,把工具模板内选定的任一种工具光标放在流程图程序的子程序(SubVI)或图标上,就会显示相应的帮助信息。
图标名称功能1OperateValue(操作值)用于操作前面板的控制和显示。
使用它向数字或字符串控制中键入值时,工具会变成标签工具2Position/Size/Select(选择)用于选择、移动或改变对象的大小。
当它用于改变对象的连框大小时,会变成相应形状。
3EditText(编辑文本)用于输入标签文本或者创建自由标签。
当创建自由标签时它会变成相应形状。
4ConnectWire(连线)用于在流程图程序上连接对象。
如果联机帮助的窗口被打开时,把该工具放在任一条连线上,就会显示相应的数据类型。
5ObjectShortcutMenu(对象菜单)用鼠标左键可以弹出对象的弹出式菜单。
6ScrollWindows(窗口漫游)使用该工具就可以不需要使用滚动条而在窗口中漫游。
7Set/ClearBreakpoint(断点设置/清除)使用该工具在VI的流程图对象上设置断点。
LabVIEW初级入门教程
概述本次介绍使用LabVIEW来进行仪器控制的各种方法。
要求学生学会串行I/O、GPIB I/O和VISA I/O的使用方法,同时也可以验证LabVIEW本身提供的仪器驱动程序。
本次的实验设备要求一块已安装的GPIB卡,一台GPIB仪器以及LabVIEW开发系统。
串行通讯串行通讯是一种常用的数据传输方法,它用于计算机与外设,例如一台可编程仪器,或者与另外一台计算机之间的通讯。
串行通讯中发送方通过一条通讯线,一次一个字节,把数据传送到接收方。
由于大多数电脑都有一至两个串行通讯接口,因此,串行通讯非常流行。
许多GPIB仪器也都有串行接口。
然而,串行通讯的缺陷是一个串行接口只能与一个设备进行通讯。
一些外设需要用特定字符来结束传送给它们的数据串。
常用的结束字符是回车符、换行符或者分号。
具体可以查阅设备使用手册以决定是否需要一个结束符。
在LabVIEW功能模板的Instrument I/O>Serial程序库中包含进行串行通讯操作的一些功能模块:1. Serial Port Init VI模块用于初始化所选择的串行口。
Flow control设置握手方式的参数。
Buffer size设置程序分配的输入/输出缓冲区的大小。
Port number决定通讯接口地址。
Baud rate, data bits,stop bits和parity等设置通讯参数。
2. Serial port write VI模块把String to write中的数据写到port number指定的串行接口中。
3. Serial port read VI模块从Port number 指定的串行接口中读取requested byte count指定的字符个数。
4. Bytes at serial port VI模块计算由Port number指定的串行接口的输入缓冲区中存放的字节个数,并将该数值存放于Byte count中。
在下面的实例中,实现从一台串行仪器中读取测量值。
labview教程
labview教程LabVIEW是一款强大的图形化编程软件,用于实时数据采集、仪器控制、测量设备、数据处理和分析等应用。
本教程将带你快速入门LabVIEW,介绍一些基本操作和常用功能。
1. 下载和安装LabVIEW软件- 前往官方网站下载最新版本的LabVIEW软件,并按照提示进行安装。
2. 打开LabVIEW并创建一个新的VI(Virtual Instrument)- 打开LabVIEW软件后,点击菜单栏上的"File",选择"New VI"。
- 这将在编辑器中创建一个新的虚拟仪器。
3. LabVIEW界面介绍- LabVIEW的界面主要由菜单栏、工具栏、面板和编辑区组成。
- 菜单栏提供各种功能和选项,例如文件操作、编辑、调试和运行。
- 工具栏包含了常用的操作工具,例如选择、连线和调节大小等。
- 面板是VI的前端界面,用于显示和操作数据。
- 编辑区是VI的主要工作区域,用于构建程序逻辑和连接各种功能模块。
4. 基本操作和函数- 拖拽控件和函数:在工具栏中选择需要的控件或函数,拖拽到面板或编辑区中。
- 连线功能模块:使用鼠标从一个输出端口拖拽线条到另一个输入端口,将功能模块串联起来。
- 配置控件和函数:右键点击控件或函数,选择"Properties"或"Configure"进行参数设置。
- 调试和运行程序:点击编辑器中的运行按钮,或按下快捷键Ctrl+R,运行程序并查看结果。
5. 数据采集和显示- 使用数据采集模块:LabVIEW提供了丰富的数据采集函数和工具,用于连接和读取各种传感器、仪器和设备。
- 配置数据显示:选择适当的图表或指示器,配置其参数和样式,将采集的数据显示在界面上。
6. 仪器控制和操作- 使用仪器控制模块:LabVIEW支持与各种仪器进行通信和控制,例如示波器、多用途数据采集卡等。
- 配置仪器控制:选择合适的仪器控制函数,配置通信接口和命令参数,实现对仪器的操作和控制。
使用LabVIEW进行控制系统设计和调试
使用LabVIEW进行控制系统设计和调试LabVIEW是一种面向工程技术的开发环境和系统设计软件,具有强大的数据采集、分析和控制能力。
本文将介绍如何使用LabVIEW进行控制系统设计和调试的步骤和方法。
一、引言控制系统是现代工程领域中非常重要的一部分,它可以用于自动化生产线、机器人、飞行器等各种应用。
LabVIEW是一种功能强大、易于使用的软件平台,可以帮助工程师们实现控制系统设计和调试的任务。
二、LabVIEW的基本概念1. 前面板(Front Panel)LabVIEW的前面板类似于装置的控制面板或者人机交互界面,可用于实时监测和调试系统。
在前面板上,我们可以添加各种控制和指示元件,如开关、按钮、图表等,以便与系统进行交互。
2. 控制面板(Block Diagram)LabVIEW的控制面板是用于编写程序代码的地方,我们可以在控制面板上添加各种功能模块,如数据采集、信号处理、控制算法等。
控制面板上的元件可以通过节点、线连接在一起,构成一个完整的程序逻辑。
三、控制系统设计的步骤1. 系统建模在设计控制系统之前,我们需要对要控制的对象进行数学建模。
根据系统的特性和要求,选择适当的模型,如线性模型、非线性模型等。
2. 控制设计根据所建模型,选择合适的控制策略和算法。
常用的控制方法包括PID控制、最优控制、模糊控制等。
在LabVIEW的控制面板上,通过添加相应的功能模块可以轻松实现这些控制算法。
3. 系统实现将控制算法转化为可执行的代码,通过连接适当的硬件设备,实现对系统的实时控制。
在LabVIEW中,可以使用各种DAQ设备和传感器,通过采集和输出信号与外部设备交互。
4. 系统调试在实际应用中,系统不可避免地会出现各种问题,如信号干扰、响应迟缓等。
使用LabVIEW提供的实时监测和调试工具,可以帮助我们识别和解决这些问题,确保系统正常运行。
四、LabVIEW在控制系统设计中的优势1. 易于学习和使用LabVIEW采用图形化编程方式,用户可以通过拖拽和连接节点、线来完成程序的编写,无需掌握复杂的编程语法。
labview树结构第二列的内容
Labview是一种流行的图形化编程环境,通常用于数据采集、控制系统和测试自动化。
在LabView中,树结构是一种常见的数据结构,它允许用户以层次结构的方式组织和显示数据。
每个节点有一个标签作为其名称,并且通常会有一列或多列额外的内容,用于显示有关该节点的详细信息。
而在LabView树结构中,第二列的内容通常用于展示有关该节点的相关信息,这些信息可以是节点的属性、状态、类型等。
在一些应用中,第二列还可以用于展示用户自定义的数据,例如节点的描述、注释或者其他相关信息,以帮助用户更好地理解和管理树结构中的数据。
在实际应用中,我们经常需要根据不同的需求来展示和处理树结构中的数据,而第二列的内容则扮演着至关重要的角色。
以下是关于LabView树结构第二列内容的一些常见用途和技巧:1. 显示节点属性:第二列内容可以用于显示节点的属性,例如节点的名称、ID、创建时间、修改时间等。
这些属性对于用户了解和管理节点非常重要,可以帮助用户更直观地了解节点的特性。
2. 显示节点状态:在某些应用中,第二列内容被用于显示节点的状态,例如节点是否可用、是否被选中、是否为叶子节点等。
通过节点状态的显示,用户可以快速了解当前树结构的状态,以便及时进行调整和处理。
3. 显示节点类型:第二列内容还可以用于显示节点的类型信息,例如节点所属的对象类型、数据类型等。
这对于处理和分析节点数据非常重要,可以帮助用户更好地理解和处理节点数据。
4. 显示用户自定义信息:在一些特定的应用中,用户可以自定义第二列的内容,用于展示节点的描述、注释或者其他相关信息。
这种自定义信息可以帮助用户更好地管理和理解树结构中的数据。
LabView树结构第二列的内容在实际应用中具有非常重要的意义,它不仅可以帮助用户更直观地了解和管理数据,同时也可以提高用户的工作效率和数据处理能力。
在使用LabView树结构时,我们应该充分利用第二列内容的展示和处理功能,以便更好地应对不同的需求和挑战。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LabVIEW Tree Control 使用说明一.控件简介 (1)二.控件的常用属性、方法、事件 (2)三.常见操作的实现方法 (2)3.1 增加节点 (2)3.2 删除节点 (2)3.3 节点的移动 (3)3.4 获取当前用户选中的节点 (3)3.5 节点的查找 (3)3.6 节点的遍历 (4)3.7 Tree Control界面显示内容操作 (4)3.7.1 读取left Cell String 或Child Text的值 (4)3.7.2 修给某Item的值 (4)3.8 控件内容运行时修改 (4)一.控件简介LabVIEW的Tree Control 控件以树型结构显示信息,每个节点带细节描述列。
可以显示该节点的其它信息。
如下图所示图 1 . 控件外观二.控件的常用属性、方法、事件控件的常用属性、方法、事件可以很方便的从LabVIEW的帮助或者编写简单的Demo 获取,这里就不再赘述。
只是有一点需要注意,控件属性结构上显示的字符是控件的Left Cell String,可以重复,再控件内部管理这些节点是用Tag属性,该属性为字符串类型,不可重复,如果增加节点时不设置该属性,LabVIEW会默认将Left Cell String作为Tag,遇到重复的情况以”下划线加数字”区分。
如“张三_1”。
在控件的方法、事件中获取到节点值都是控件的Tag。
三.常见操作的实现方法3.1 增加节点使用控件的Add Item 方法,如图所示:如果只是增加一个节点作为树的最后一个节点,可以使用Add Item To End 方法。
3.2 删除节点使用控件的delete Item 方法Delete children 代表删除父节点是否要删除子节点。
如果不删除子节点,子节点将往上移动一层替代原父节点的位置。
如果该节点没有子节点而要求删除,将会产生错误。
所以删除时最好先检测是否有子节点LabVIEW 的树型结构控件节点的界面拖拽代码不需要设计者编写,只需要设置Allow Draging ,Allow Draging of Parant Items ,Allow Draging Between Items 属性即可。
如果在运行时需要由程序移动节点,使用方法Move Item 即可程序中要展开,收合节点使用Open/Close方法3.4 获取当前用户选中的节点alueChange)要获知当前用户选中的节点需要使用该控件的事件(V3.5 节点的查找LabVIEW Tree Control 提供节点的查找方法有Get ChildGet NextGet ParentGet Path看了节点的查找方法后,我们不禁要问,难道我要全面遍历节点需要通过这些方法来编写复杂的遍历代码吗?答案是否定的。
Tree Control有个属性是Display Items ,按照先序遍历顺序将所有节点的Tag存储在字符数组中,相当于delphi Tree Control 的Items。
可以通过对数组的遍历实现对树节点的全面访问。
3.7 Tree Control界面显示内容操作前面提到了该控件内部管理树是通过Tag管理,界面显示与Tag无关,Tree Control管理界面显示的内容类似Grid,每一个格子为一个单元,可以设置其属性,也可读出值。
3.7.1 读取left Cell String 或Child Text的值使用两个属性节点,首先将要读取的格子置为Active(使用Active Item Properties和Active Cell Properties),再读取Active Cell String 即可。
附注:恶劣的设计,大大方方地给它一个数组产生的Child Text 这么卑劣地还给我。
3.7.2 修给某Item的值如果修改Item的Tag,可以使用方法节点Set Tag,如果修改Left Cell String或者Child Text 方法有二:方法一:将该Item删除再添加。
方法二:仿照3.7.13.8 控件内容运行时修改我们不难发现,该控件可以在设计时修改值,再进行增加节点,填入节点内容等等操作,但是当程序运行时却不能由用户修改Cell里的值。
也就是不具备输入功能。
网站上LabVIEW官方的说法是我们目前使用的包是Base Package 。
而要进行这项操作需要Full Package ,或Professional package 支持。
可以通过/advisors/ua?stayput=true在线升级,目前该项功能我还在尝试。
不过可能稍显麻烦,网站上升级问我要RMB ,如果项目中不需要用户在树型控件中输入就不升级了。
引用Tree控件的使用labview 2010-07-03 01:22:17 阅读90 评论0 字号:大中小订阅引用statemice的Tree控件的使用本节将重点讨论LabVIEW中的Tree控件,也许是控件本身的使用比较“麻烦”,导致很多程序员不愿意使用该控件。
其实在大多数的应用程序中均可以看到Tree的身影,如Windows操作系统中的“资源管理器”左侧的文件列表,通常Tree控件可以用来显示一些有组织的、分类明确的数据。
1.1 编辑Tree控件的外观Tree控件位于LV的控件选板“List&Table”子选板中,如图1所示。
从背面板可以看出Tree实质上是一种字符串(String)类型,这难免会让人费解:如何将前面板大量的“条理性的数据”与String对应呢?图 1 Tree控件选择工具选板中的Edit Text工具,可以直接在Tree控件中输入数据。
(1)通过Tree控件的右键快捷菜单V isible Items菜单项,可以改变Tree控件的显示外观,如图2所示。
可以逐一勾选/不勾选该菜单项中的菜单,就明确了各个菜单项对应的含义。
图 2 改变Tree控件的显示外观(2)在Visible Items中有一个Symbols菜单项,从外观上看勾选或不勾选该选项没有什么区别。
原来,LabVIEW允许对Tree中的每一行指定一个符号,显示在行首。
要显示该符号首先需要勾选Visible Items→Symbols选项,其次在某一行上右击弹出的快捷菜单上选择Item Symbol菜单项,并选择一个符号。
如图3所示。
LabVIEW提供了42种符号可供选择,其中第1种为空(默认值,因此前面在勾选V isible Items→Symbols后看不到变化)。
可以通过该方式为每一行添加各种不同的符号。
图 3 选择Symbol(3)在Windows资源管理器中,我们可以看到Tree是能够显示层级关系的。
这一点可以通过选择右键快捷菜单中的Indent Item和Outdent Item实现,在第图中的3行上右击选择Indent Item,则第3行变成了第2行的子行,如图4所示。
此时,LabVIEW会自动添加一个“+”或“—”符号,如同Windows资源管理器中显示的一样。
程序员可以通过选择快捷菜单中的Expand/Contract Symbol Type选项来改变该符号的显示样式。
图 4 改变Tree控件的层次关系(4)那么LabVIEW究竟如果把Tree控件上显示的诸多字符串表示在底层函数面板中呢?我们可以尝试使用一个String显示件验证Tree控件的输出,其前面板和背面板如图5所示。
运行该VI,并且选择Tree的不同行(随着选择的不同,被选中的行会以蓝色高亮显示,比如图中的第3行),观察String显示件中的值。
可以得到Tree控件的输出好像是每一行的首列字符串,但是第4行的输出却是A_1,这是一个从来没有输入过的值。
图 5 测试Tree控件的输出字符串选择Tree右键快捷菜单中的Edit Item…菜单项,将弹出如图6所示的对话框。
对话框的左侧是Tree控件显示的内容,改变控件的选择,可以看出右侧的Tag会随之改变,并且第4行的Tag值正好是A_1。
原来Tree控件为每一行自动分配了一个唯一的Tag值(该值可以在Edit Item对话框中修改,但是必须确保唯一性和非空性),其输出则是当前选中行的Tag值。
我们可以尝试将第4行的Tag值强行修改为A,此时LabVIEW将会以红色背景显示Tag值,表示该Tag值重复,无法正常使用(也就是说Tree控件中每一行的Tag值必须是唯一并且非空的)。
图 6 Edit Tree Items对话框1.2 Tree控件对应的事件在背面板上放置一个事件结构,并且选择Tree控件,可以看到其对应的所有事件,如图7所示。
本节只介绍一些特殊的Tree事件。
图7 Tree控件的事件✍Edit Cell事件该事件与multicolum listbox中的Edit Cell事件一样,当用户编辑控件中的内容时被触发。
分为Edit Cell消息型事件和Edit Cell?过滤型事件,后者可以根据程序员的设计取消掉该事件。
如程序运行时只允许用户修改Tree控件第1列的值,而不允许修改其他列的值。
可以使用Edit Cell?过滤型事件实现该功能,具体如图8所示。
要允许用户在程序运行时编辑Tree 控件的值需要首先勾选Tree控件右键快捷菜单中的Editable Cells菜单项,然后运行该程序,在需要修改的单元格中单击并输入响应的字符。
可以看出除了修改第1列的值以外,对其它列的修改都不会成功。
也可以把本例延伸一下,比如只允许用户输入特定的字符串(大写字母,数字等),应该如何处理呢?图8 Tree控件的Edit Cell?过滤型事件✍Double Click事件从名称可以看出,该事件在用户双击Tree控件时被触发,如图9所示。
图中事件数据节点中的Tag表示用户双击了哪一行,但是是否有一种方式明确了用户到底双击了Tree控件中的哪一个区域呢,具体为哪一行哪一列呢?显然左侧的Coords表示双击的坐标值,我们可以通过Tree控件的“Point To Row Column”方法(Create→Invoke Node)将Coords坐标值转化为具体的行和列值。
此外,如何表示用户双击了Tree控件的行头和列头呢?具体可以参考LabVIEW中关于“Point To Row Column”方法的帮助文档。
图9 Tree控件的Double Click过滤型事件Item Close和Item Open事件这两个事件是对立的,分别具有一个消息型事件和一个过滤型事件。
它们是在用户展开或收缩某一个父层次项时被触发的,如上述Tree控件中的第2行,当展开或收缩该行时会触发该事件(可以通过单击该行左侧的“+”和“—”符号或者双击该行实现展开和收缩操作)。
如果不希望用户收缩Tree控件的第2行,可以使用如图10所示的代码。