LabVIEW Tree Control使用说明
- 格式:doc
- 大小:750.50 KB
- 文档页数:14
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是Microsoft Foundation Classes(MFC)中的一个重要控件,用于在Windows应用程序中显示树状结构的数据。
除了基本的显示和展开折叠功能外,MFC Tree Control还提供一些高级用法,以增强用户体验和数据展示的灵活性。
一、自定义绘制节点MFC Tree Control允许开发人员自定义绘制每个节点的外观。
通过覆盖基类的虚拟函数,可以在绘制节点时进行自定义操作。
例如,你可以更改节点的背景色、文字颜色,甚至绘制自定义图标来表示不同的节点类型。
二、节点排序MFC Tree Control的默认行为是按照添加节点的顺序来显示它们。
但是,如果你希望有特定的节点排序规则,你可以通过重写比较函数来实现。
通过在节点比较函数中定义自己的排序逻辑,你可以按照节点值、节点类型或其他自定义标准对节点进行排序。
三、拖放支持MFC Tree Control还提供了拖放支持,使用户能够方便地重新组织树状结构。
你可以将节点拖动到其他节点之间,甚至移动节点到不同的树控件中。
通过处理拖放事件,你可以自定义节点移动的规则和行为。
四、节点编辑MFC Tree Control允许用户在展示的树状结构中编辑节点的文本。
通过启用节点编辑功能,用户可以直接在节点上双击并修改文本。
你可以在编辑结束后响应事件,并根据用户的修改来更新数据。
总结:MFC 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(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的使用详解(一)树型视的三个结构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是最常用的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编程工具:详细说明编程工具:详细信息当鼠标移到前面板或程序框图的对象上时,光标会发生变化- 这就是提示你在某些特定位置发生的变化。
下文介绍了这些光标的模式或工具。
使用LabVIEW提供的工具可以新建、修改和调试VI。
工具是鼠标光标的特殊操作模式。
鼠标的操作模式对应于所选工具的图标。
LabVIEW将根据鼠标的当前位置选择相应的工具。
图1.工具选板在工具选板中可手动选择所需工具。
选择查看?工具选板呈现工具选板自动工具选择器工具选板的第一项为自动工具选择按钮。
它被选中时,LabVIEW 将根据光标的当前位置自动选择工具。
如果需要关闭自动工具,可以取消选择或者选择选板中的其它项。
如果将LabVIEW工具比作家用工具,下列的单独工具就好比螺丝刀、刀片、螺丝锥,而自动工具选择器就是能够完成所有任务的瑞士军刀。
图2.单独工具和自动工具选择器LabVIEW常用工具下列为LabVIEW中一些较为常见的工具。
请注意当选中自动选择工具按钮时,鼠标会变为下列工具之一来完成LabVIEW中最常见的任务。
操作工具当光标变成左图所示的图标时,表明正在使用连线工具。
操作工具用于改变控件的值。
例如,在图2中,通过操作值工具移动“水平指针滑动杆”。
当鼠标移至指针上方时,光标会变为操作工具。
图3. 使用操作工具操作工具大多用于前面板窗口,但也可用于在程序框图窗口中改变布尔常量的值。
定位工具当光标变成左图所示的图标时,表明正在使用定位工具。
定位工具用于选择或对象调整大小。
例如,在图3中,定位工具选择数值控件测量次数。
选择对象后,可以移动、复制或者删除该对象。
当鼠标移至对象的边界时,会自动转换为定位工具。
图4.使用定位工具选择对象如果鼠标移至对象的调节尺寸节点上,光标模式将显示为该对象可以被改变大小,如图 4所示。
注意:当光标移至“XY 图”角上的调节尺寸节点时,光标将变成双箭头。
定位工具既可以用在前面板窗口中,也可以用在程序框图中。
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(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 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所示的代码。