树形控件-基础

树形控件-基础
树形控件-基础

vc树形控件TreeCtrl经验总结(一)

树形控件可以用于树形的结构,其中有一个根接点(Root)然后下面有许多子结点,而每个子结点上有允许有一个或多个或没有子结点。MFC中使用CTreeCtrl类来封装树形控件的各种操作。通过调用

BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );创建一个窗口,dwStyle中可以使用以下一些树形控件的专用风格:

TVS_HASLINES 在父/子结点之间绘制连线

TVS_LINESATROOT 在根/子结点之间绘制连线

TVS_HASBUTTONS 在每一个结点前添加一个按钮,用于表示当前结点是否已被展开

TVS_EDITLABELS 结点的显示字符可以被编辑

TVS_SHOWSELALWAYS 在失去焦点时也显示当前选中的结点

TVS_DISABLEDRAGDROP 不允许Drag/Drop

TVS_NOTOOLTIPS 不使用ToolTip显示结点的显示字符

在树形控件中每一个结点都有一个句柄(HTREEITEM),同时添加结点时必须提供的参数是该结点的父结点句柄,(其中根Root结点只有一个,既不可以添加也不可以删除)利用

HTREEITEM InsertItem( LPCTSTR lpszItem, HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST );可以添加一个结点,pszItem为显示的字符,hParent代表父结点的句柄,当前添加的结点会排在hInsertAfter表示的结点的后面,返回值为当前创建的结点的句柄。

下面的代码会建立一个如下形式的树形结构:

+--- Parent1

+--- Child1_1

+--- Child1_2

+--- Child1_3

+--- Parent2

+--- Parent3

HTREEITEM hItem,hSubItem;

hItem = m_tree.InsertItem("Parent1",TVI_ROOT);在根结点上添加Parent1

hSubItem = m_tree.InsertItem("Child1_1",hItem);//在Parent1上添加一个子结点

hSubItem = m_tree.InsertItem("Child1_2",hItem,hSubItem);//在Parent1上添加一个子结点,排在Child1_1后面

hSubItem = m_tree.InsertItem("Child1_3",hItem,hSubItem);

hItem = m_tree.InsertItem("Parent2",TVI_ROOT,hItem);

hItem = m_tree.InsertItem("Parent3",TVI_ROOT,hItem);

如果你希望在每个结点前添加一个小图标,就必需先调用CImageList*

SetImageList( CImageList * pImageList, int nImageListType );

CImageList指向一个CImageList对象,如果这个值为空,则CTreeCtrl中的Image将被移除。

nImageListType有两种,TVSIL_NORMAL-包含选择和被选择两个状态的Image,TVSIL_STATE-用户定义状态的Image。

在调用完成后控件中使用图片以设置的ImageList中图片为准。然后调用

HTREEITEM InsertItem( LPCTSTR lpszItem, int nImage, int nSelectedImage, HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST);添加结点,

nImage为结点没被选中时所使用图片序号,nSelectedImage为结点被选中时所使用图片序号。

下面的代码演示了ImageList的设置。

m_list.Create(IDB_TREE,16,4,RGB(0,0,0));

m_tree.SetImageList(&m_list,TVSIL_NORMAL);

m_tree.InsertItem("Parent1",0,1);//添加,选中时显示图标1,未选中时显示图标0 Example2:

CImageList imglist;

CBitmap bitmap;

imglist.Create(16, 16, ILC_MASK, 1, 1);

bitmap.LoadBitmap( IDB_COMPUTER );

imglist.Add(&bitmap, (COLORREF)0xFFFFFF);

bitmap.DeleteObject();

treectrl.SetImageList(&m_imgList, TVSIL_NORMAL);

此外CTreeCtrl还提供了一些函数用于得到/修改控件的状态。

HTREEITEM GetSelectedItem( );将返回当前选中的结点的句柄。BOOL

SelectItem( HTREEITEM hItem );将选中指明结点。

BOOL GetItemImage( HTREEITEM hItem, int& nImage, int& nSelectedImage ) / BOOL SetItemImage( HTREEITEM hItem, int nImage, int nSelectedImage )用于得到/修改某结点所使用图标索引。

CString GetItemText( HTREEITEM hItem ) /BOOL SetItemText( HTREEITEM hItem, LPCTSTR lpszItem );用于得到/修改某一结点的显示字符。

BOOL DeleteItem( HTREEITEM hItem );用于删除某一结点,BOOL DeleteAllItems( );将删除所有结点。

此外如果想遍历树可以使用下面的函数:

HTREEITEM GetRootItem( );得到根结点。

HTREEITEM GetChildItem( HTREEITEM hItem );得到子结点。

HTREEITEM GetPrevSiblingItem/GetNextSiblingItem( HTREEITEM hItem );得到指明结点的上/下一个兄弟结点。

HTREEITEM GetParentItem( HTREEITEM hItem );得到父结点。

树形控件的消息映射使用ON_NOTIFY宏,形式如同:ON_NOTIFY( wNotifyCode, id, memberFxn ),wNotifyCode为通知代码,id为产生该消息的窗口ID,memberFxn为处理函数,函数的原型如同void OnXXXTree(NMHDR* pNMHDR, LRESULT* pResult),其中pNMHDR为一数据结构,在具体使用时需要转换成其他类型的结构。对于树形控件可能取值和对应的数据结构为:

TVN_SELCHANGED 在所选中的结点发生改变后发送,所用结构:NMTREEVIEW

TVN_ITEMEXPANDED 在某结点被展开后发送,所用结构:NMTREEVIEW

TVN_BEGINLABELEDIT 在开始编辑结点字符时发送,所用结构:NMTVDISPINFO

TVN_ENDLABELEDIT 在结束编辑结点字符时发送,所用结构:NMTVDISPINFO

TVN_GETDISPINFO 在需要得到某结点信息时发送,(如得到结点的显示字符)所用结构:NMTVDISPINFO

关于ON_NOTIFY有很多内容,将在以后的内容中进行详细讲解。

关于动态提供结点所显示的字符:首先你在添加结点时需要指明lpszItem参数为:LPSTR_TEXTCALLBACK。在控件显示该结点时会通过发送TVN_GETDISPINFO来取得所需要的字符,在处理该消息时先将参数pNMHDR转换为LPNMTVDISPINFO,然后填充其中item.pszText。但是我们通过什么来知道该结点所对应的信息呢,我的做法是在添加结点后设置其lParam参数,然后在提供信息时利用该参数来查找所对应的信息。下面的代码说明了这种方法:

char szOut[8][3]={"No.1","No.2","No.3"};

//添加结点

HTREEITEM hItem = m_tree.InsertItem(LPSTR_TEXTCALLBACK,...)

m_tree.SetItemData(hItem, 0 );

hItem = m_tree.InsertItem(LPSTR_TEXTCALLBACK,...)

m_tree.SetItemData(hItem, 1 );

//处理消息

void CParentWnd::OnGetDispInfoTree(NMHDR* pNMHDR, LRESULT* pResult)

{

TV_DISPINFO* pTVDI = (TV_DISPINFO*)pNMHDR;

pTVDI->item.pszText=szOut[pTVDI->item.lParam];//通过lParam得到需要显示的字符在数组中的位置

*pResult = 0;

}

关于编辑结点的显示字符:首先需要设置树形控件的TVS_EDITLABELS风格,在开始编辑时该控件将会发送TVN_BEGINLABELEDIT,你可以通过在处理函数中返回TRUE来取消接下来的编辑,在编辑完成后会发送TVN_ENDLABELEDIT,在处理该消息时需要将参数pNMHDR转换为LPNMTVDISPINFO,然后通过其中的item.pszText得到编辑后的字符,并重置显示字符。如果编辑在中途中取消该变量为NULL。下面的代码说明如何处理这些消息:

//处理消息TVN_BEGINLABELEDIT

void CParentWnd::OnBeginEditTree(NMHDR* pNMHDR, LRESULT* pResult)

{

TV_DISPINFO* pTVDI = (TV_DISPINFO*)pNMHDR;

if(pTVDI->item.lParam==0);//判断是否取消该操作

*pResult = 1;

else

*pResult = 0;

}

//处理消息TVN_BEGINLABELEDIT

void CParentWnd::OnBeginEditTree(NMHDR* pNMHDR, LRESULT* pResult)

{

TV_DISPINFO* pTVDI = (TV_DISPINFO*)pNMHDR;

if(pTVDI->item.pszText==NULL);//判断是否已经取消取消编辑

m_tree.SetItemText(pTVDI->item.hItem,pTVDI->pszText);//重置显示字符

*pResult = 0;

}

上面讲述的方法所进行的消息映射必须在父窗口中进行(同样WM_NOTIFY的所有消息都需要在父窗口中处理)。

文章转自:https://www.360docs.net/doc/e68473948.html,/dongle2001/articles/429704.aspx

1.树视图风格:

TVS_HASBUTTONS; //在父项旁边显示(+)和(-)

TVS_HASLINES; //使用线条显示各项之间的层次

TVS_LINESATROOT;//使用线条链接树视图控件根部各项

2.处理单击事件:TVN_SELCHANGED

void CTreeCtrlDlg::OnTvnSelchangedTree1(NMHDR *pNMHDR, LRESULT *pResult)

{

LPNMTREEVIEW pNMTreeView = reinterpret_cast(pNMHDR);

// TODO: 在此添加控件通知处理程序代码

HTREEITEM ht=m_treeCtrl.GetSelectedItem();

CString strSelect=m_treeCtrl.GetItem Text(ht);

m_strTreeVal=strSelect;

UpdateData(FALSE);

*pResult = 0;

}

3.同时让自己派生的CMyTreeCtrl类和对话框处理TVN_SELCHANGED消息:

只须在CMyTreeCtrl中处理以下消息,并返回FALSE就OK了

ON_NOTIFY_REFLECT_EX(TVN_SELCHANGED, OnTvnSelchanged) OnTvnSelchanged的签名如下

BOOL CMyTreeCtrl::OnTvnSelchanged(NMHDR *pNMHDR,LRESULT *pResult)

4.编辑标签:要允许编辑树视图控件中的文本,可以设置以下三个步骤

(1).设置树视图的TVS_EDITLABELS风格

TVS_EDITLABE可以通过资源编辑框内部修改(Edit labels),也可以用代码的方式修改,如下

long lStyle=::GetWindowLong(m_treeCtrl.GetSafeHwnd(),GWL_STYLE);

lStyle|=TVS_EDITLABELS;

::SetWindowLong(m_treeCtrl.GetSafeHwnd(),GWL_STYLE,lStyle)

(2).处理TVN_BEGINLABELEDIT通知消息

//设置相关限制,如限制编辑框字符串长度

CEdit*pEdit=GetEditControl(); //获取当前选中结点编辑框

ASSERT(pEdit);

if (pEdit)

{

pEdit->LimitText(15);//设置编辑框文本长度为15个字符串

*pResult = 0;

}

(3).处理TVN_ENDLABLEEDIT通知消息

HTREEITEM hParent=GetParentItem(pTVDispInfo->item.hItem); //获取父结点

HTREEITEM hChild=GetChildItem(hParent?hParent:TVI_ROOT); //获取第一个根结点 hChild=GetNextSiblingItem(hChild); //获取下一个兄弟节点

if (pTVDispInfo->item.hItem!=hChild) //判断是否与当前节点相同

pTVDispInfo->item.pszText //获取当前节点的字符串

CString strText=GetItemText(hChild); //获取节点的字符串

5.让树视图处理Esc和Enter键

重载PreTranslateMessage函数

BOOL bHandleMsg=FALSE;

switch(pMsg->message) {

case VK_ESCAPE:

case VK_RETURN:

if (::GetKeyState(VK_CONTROL)&0x8000)

{

break;

}

if (GetEditControl())

{

::TranslateMessage(pMsg);

::DispatchMessage(pMsg);

bHandleMsg=TRUE;

}

break;

}

组态王历史趋势控件使用详解

KVHTrend控件使用方法 KVHTrend曲线控件是组态王以Active X控件形式提供的绘制历史曲线和ODBC数据库曲线的功能性工具。通过该控件,不但可以实现历史曲线的绘制,还可以实现ODBC数据库中数据记录的曲线绘制,而且在运行状态下,可以实现在线动态增加/删除曲线、曲线图表的无级缩放、曲线的动态比较、.曲线的打印等。该曲线控件最多可以绘制16条曲线。 1、创建历史曲线控件: 在组态王开发系统中新建画面,在工具箱中单击“插入通用控件”或选择菜单“编辑” 下的“插入通用控件”命令,弹出“插入控件”对话框,在列表中选择“历史趋势曲线”,单击“确定”按钮,对话框自动消失,鼠标箭头变为小“十”字型,在画面上选择控件的左上角,按下鼠标左键并拖动,画面上显示出一个虚线的矩形框,该矩形框为创建后的曲线的外框。当达到所需大小时,松开鼠标左键,则历史曲线控件创建成功,画面上显示出该曲线,如图1所示。 图1 历史曲线控件 2、设置控件固有属性: 控件创建完成后,在控件上单击右键,在弹出的快捷菜单中选择“控件属性”命令,弹出历史曲线控件的固有属性对话框,如图2所示。 北京亚控科技发展有限公司

北京亚控科技发展有限公司 控件固有属性含有两个属性页:曲线、坐标系。下面详细介绍每个属性页中的含义。 2、1 曲线属性页 如图2所示,曲线属性页中下半部分为定义在绘制曲线时,历史数据的来源,可以选择组态王的历史数据库或其它数据库为数据源。 曲线属性页中上半部分“曲线”是定义曲线图表初始状态的曲线变量、绘制曲线的方式、是否进行曲线比较等: ? 列表框:显示已经添加的变量的名称及绘制方式定义等。 ? “增加”按钮:增加变量到曲线图表,并定义曲线绘制方式。 单击该按钮,弹出如图3所示的对话框。 图2 历史曲线控件固有属性

Access Treeview 应用实例

《Access Treeview 应用实例》 使用说明: 本程序可在各种支持VBA语言的软件上直接使用,其中MS Access已成功测试具体步骤为: 1、在Access里创建一个tblTreeview的数据表如下图: 2、在Access里创建一个frmTreeview的窗体,在窗体里创建一个Treeview1的Treeview控件和一个 ImageList1的ImageList控件如下图:

3、然后把程序复制到frmTreeview窗体的加载事件当中如下图: 4、最终效果如下图:

程序: Private Sub Form_Load() On Error Resume Next Dim strParent As String, strChild As String, MyNode As Node Me.Treeview1.Nodes.Clear '清除Treeview的所有旧节点 Me.Treeview1.ImageList =Me.ImageList1.Object '把图标加载到每个节点前面 Set rst = CurrentDb.OpenRecordset("SELECT * FROM tblTreeview", dbOpenSnapshot, dbReadOnly) 'Treeview 节点数据来源 While Not rst.EOF strChild = rst!ChildID If rst!ChildID <> rst!ParentID Then strParent = Mid(rst!ParentID, 1, Len(rst!ParentID) - Len(rst!ChildID) - 1) Set MyNode = Me.Treeview1.Nodes.Add(strParent, tvwChild, rst!ParentID, rst!ChildID, "A1", "A3") '加载子节点 Else strParent = rst!ChildID Set MyNode = Me.Treeview1.Nodes.Add(, , strChild, rst!ChildID, "A1", "A3") '加载父节点End If rst.MoveNext Wend rst.Close '关闭数据集 Me.Treeview1.HideSelection = False '离开焦点后有阴影 End Sub

C# 树型控件

C# 树型控件 [分享]用C#画树 树形图用于显示按照树形结构进行组织的数据,其用途比较广泛,如计算机中的文件系统(Windows中的资源管理器)、企业或公司的组成结构等。我们知道在Windows下VB、PB、Delphi等工具提供了一个功能很强的树型控件TreeView,利用Treeview控件可以方便地开发树形图。然而在网页上实现树形图就不那么容易了,现在在https://www.360docs.net/doc/e68473948.html,中利用微软提供的Internet Explorer WebControls它使得网页上的树形图开发与在Windows下一样的方便,一样的功能强大,甚至更灵活。本文介绍用Internet Explorer WebControls开发树形图的方法,由于树形图结构较复杂,使用起来常不知如何下手。笔者结合最近刚为公司用https://www.360docs.net/doc/e68473948.html,编写的应用程序管理器这一具体实例,详细阐述在https://www.360docs.net/doc/e68473948.html,下如何将Internet Explorer WebControls的使用与数据库联系起来,实现数据分任意多层显示,方便地进行增加、修改、删除、移动操作。笔者希望通过对该实例的阐述,达到抛砖引玉的效果,与各位同仁相互交流,共同进步。Internet Explorer WebControls不在https://www.360docs.net/doc/e68473948.html,的标准Server Control中,要到微软的站点上下载,下载地址是: https://www.360docs.net/doc/e68473948.html,/downloads/samples/internet/def

ault.asp?url=/Downloads/samples/Internet/ASP_DOT_NE T_ServerControls/WebControls/default.asp 下载安装后第一次使用时,要右击工具箱Customize Toolbox…→.NET Framework Components中找到Micosoft.Web.UI.WebControls.Treeview后选中,这样Treeview控件就出现在工具箱中了。一、树的建立具体方法是:创建一个数据库,设计树图信息表TREE_INFO,包含NODEID、PARENTID、NODENAME、ADDERSS、ICON字段,其它字段根据实际业务而定,节点名称NODENAME将在树型控件的节点上显示,NODEID字段保存节点的唯一标识号,PARENTID表示当前节点的父节点号,标识号组成了一个“链表”,记录了树上节点的结构。设计一个Web窗体其上放置TreeView控件。Private Sub CreateDataSet()’建立数据集 Dim myConn As New SqlConnection() Dim myCmd As New SqlCommand("select NODEID,NODENAME,PARENTID,ADDRESS,ICON from Tree_info", myConn) Dim myDataAdapter As New SqlDataAdapter() myConn.ConnectionString = Application("connectstring") https://www.360docs.net/doc/e68473948.html,mandText = "" myCmd.Connection = myConn

组态王7.5SP1版本第6章控件介绍

第七讲 控 件 第一节 控件的作用 控件可以作为一个相对独立的程序单位被其他应用程序重复调用。控件的接口是标准的,凡是满足这些接口条件的控件,包括第三方软件供应商开发的控件,都可以被组态王直接调用。组态王中提供的控件在外观上类似于组合图素,工程人员只需把它放在画面上,然后配置控件的属性进行相应的函数连接,控件就能完成其复杂的功能。 组态王除了支持本身提供的各种控件外,还支持Windows 标准的Active X 控件,包括Microsoft 提供的标准Active X 控件和用户自制的Active X 控件。Active X 控件的引入在很大程度上方便了用户,用户可以灵活地编制一个符合自身需要的控件或调用一个已有的标准控件来完成一项复杂的任务,而无须在组态王中做大量的复杂的工作。一般的Active X 控件都具有属性、方法、事件,用户通过设置控件的这些属性、事件、方法来完成工作。 第二节 超级XY 控件 下面利用XY 控件显示原料油液位与原料油罐压力之间的关系曲线,操作过程如下: 1、新建一画面,名称为:XY 控件画面。 2、选择工具箱中的工具,在画面上输入文字:XY 控件。 3、单击工具箱中的插入通用控件 工具,在弹出的插入控件窗口中双击“KvChatXY ActiveX Control ”,在画面上绘制XY 曲线窗口,如图7-1所示:

图7-1 XY曲线控件窗口 4、并双击此控件,弹出动画属性设置对话框,如图7-2所示。 图7-2 XY控件属性设置对话框 在此窗口中您可对控件的名称(名称设置为:XY)进行设置。设置完名称,确定,保存画面。然后选择控件,点击右键,弹出控件属性对话框,您可以对控件的相关属性进行设置。 普通选项卡:设置曲线对应的前景背景颜色,设置字体,标题,图例,边框,如图7-3。

VB控件 treeview用法详解

VB TreeView控件使用详解 (2012-06-16 15:08:16) 标签:分类: 第一小时:学习直接用代码将数据填充到树控件中。 为什么要先学习直接用代码将数据填充到树控件中因为这种方法是最简单的,代码也最容易理解,学习树控件,先将这个学会,已经掌握了一半,所以先不要急着想怎么将表中的数据填充到树控件中,在第一小时里,树控件和表完全没有关系。 目的:我们要在树控件中建立如下的一个3层级关系 水果 | |__苹果 | |__红富士 | |__国光 | |__葡萄 |__红提子 |__青提子 解释:水果包含2种,一种是苹果,一种是葡萄,苹果又包含2种,一种是红富士,一种是国光,葡萄也如此。 在这里:“爷”是水果,“父”是苹果,葡萄,“子”是红富士,国光,红提子,青提子。概括如下: 爷(只能有一个):水果 父(这里有2个):父1:苹果;父2:葡萄

子(这里有4个):子1:红富士(父1苹果的子);子2:国光(父1苹果的子);子3:红提子(父2葡萄的子);子4:青提子(父2葡萄的子) 1、新建一个窗体,在窗体上放置两个控件,一个是Treeview,一个是Imagelist 如何找到这两个控件 Treeview控件在“工具箱”的榔头加扳手图标(其他控件)中选“Microsoft Treeview Control,Version " Imagelist控件在“工具箱”的榔头加扳手图标(其他控件)中选“Microsoft Imagelist Control,Version " Treeview控件大家都明白干什么用的,Imagelist控件是干什么用呢原来这个控件是放图标用的,如果你想在树控件中显示图标的,这个图标都将储存在ImageList控件中。 2、设置这两个控件的属性 首先要讲清楚控件的属性设置有2种,一种是设置这个控件在ACCESS中的属性,比如名称等。一种是设置这个控件本身的属性。要设置这个控件在ACCESS中的属性,选中控件后按鼠标右键选“属性”就可以了。跟我们平时设置文本框什么的一样。要设置这个控件本身的属性,只要双击这个控件就可以了。 1)设置Treeview控件在ACCESS中的名称属性,将名称设置为“Treeview" 2)设置Imagelist控件在ACCESS中的名称属性,将名称设置为“Image" 2)设置Imagelist控件本身的属性,双击控件后,在弹出来的设置框中选“Images",单击“Insert Picture"按钮,在你电脑中选择你需要的图标。在“Key:”栏中填入“K1”。其他默认设置不用改。3)设置Treeview控件本身的属性,双击控件后,在弹出来的设置框中选“General”,在这个选项面版中有很多项设置,大多数是设置树控件的显示格式,你自己慢慢研究。这里我们将第一项“Style"选7,在第五项“Imagelist"选项中将我们放置的Imagelist控件“Image"选上。这项设置就将图标和树控件联系了起来。 3、写代码将数据填充到树控件中

treeview控件应用

树形结构控件TreeView TreeView是一种 能以树形目录结构形式 显示数据的高级控件, 显示方式类似于 Windows的资源管理 器,能分层展开各结点 的子目录,也能收缩各 结点的子目录。本节将 先介绍TreeView控件 的一些基本概念、属性 与方法,再举例说明 TreeView控件的应用。 TreeView控件概述、属性与方法 1、作用:用于显示Node结点的分层列表。 2、添加到控件箱 菜单命令:工程 | 部件,在部件对话框中选择:Microsoft Windows Common Controls 6.0 3、TreeView控件的属性 (1)属性对话框 用鼠标右键单击TreeView 控件,在弹出式菜单中选择属 性,进入属性设置对话框,该 对话框分为通用、字体、图片 三个选项卡,如图8.6所示。

①样式(Style):返回或设置在Node结点之间显示的线样式,如表8.6所示。 ②鼠标指针(MousePoint):可选择不同鼠标样式,如表8.1所示。 ③线条样式(LineStyle):0-tvwTreeLine 无根结点的树形结构,1-tvwRootLines有根结点的树形结构。 ④标签编辑(LabelEdit):0-tvwAutomatic 自动,1-tvwManual 手工; ⑤图像列表(ImageList):结点图标所用ImageList控件; ⑥边框样式(BorderStyle):0-ccNone无边框,1-ccFixedSingle单边框; ⑦外观(Appearence):0-ccFlat平面效果,1-cc3D 3D效果; ⑧缩进:父子结点的水平间距。 (2)其它属性 ①SelectedItem.Text属性:用于返回或设置当前Node结点的内容。 ②CheckBoxes属性:该属性只能取逻辑值,若取True值,则每个Node结点前出现一个复选框,否则不出现复选框。 4、TreeView控件的方法 (1)Node结点 ①Node结点:是TreeView控件中的一项,它包含图像与文本。 ②Nodes结点集合:包含一个或多个Node结点。 (2)Add方法 ①作用:为TreeView控件添加节点和子节点。 ②定义格式 TreeView1.nodes.Add(Relative,Relationship,Key,Text, Image,SelectedImage) 其中: ◆Relative参数:添加新结点时,其父结点键值Key。添加根结点时,此项为空。 ◆Relationship参数:新结点的相对位置: tvwlast—1:新节点位于同级别所有节点之后; tvwNext—2:新节点位于当前节点之后; tvwPrevious—3:新节点位于当前节点之前; tvwChild—4:新节点成为当前节点的子节点。 ◆Key:Node结点关键字(唯一标识符),用于检索Node结点。同时也作为其新建子结点的Relative值,即新建子结点的Relative=父结点Key。 ◆Text:Node结点文本。 ◆Image:Node结点位图,是关联ImageList控件中位图的索引。

组态王使用说明

皖西学院 监控组态软件实验指导书 机械与电子工程学院 电气工程教研室 2013.3

实验一监控组态工程建立与工艺流程图绘制 一、实验目的 熟练掌握工控组态软件的绘图工具 二、实验内容 熟悉工控组态软件的绘图工具,完成反应工段工艺流程绘制以及外部设备和变量的定义。 三、实验步骤 1.1创建工程 在工程管理器中选择菜单“文件/新建工程”,或者点击工具栏的“新建”按钮,根据“新建工程向导”对话框完成工程创建,如图一所示 图一工程管理器 1.2 组态画面 双击工程管理器中的工程,打开工程浏览器,在工程浏览器中左侧的“工程目录显示区”中选择“画面”,在右侧视图中双击“新建”,弹出新建画面对话框如图一所示。

图二画面属性设置 点击图二确定按钮后,在工具箱和图库中选中相应图素进行监控画面组态,绘制工艺流程图如图三所示。 图三反应车间监控画面 1.3定义设备 根据工程中实际使用得设备进行定义,本例程使用亚控的仿真PLC设备,使用“PLC-亚控-仿真PLC-串口”驱动,定义设备名称为“PLC”。

1.4定义变量 在组态王中定义三个变量:原料油液位(IO实数类型)、成品油液位(IO实数类型)、催化剂液位(IO实数类型)。 原料油液位变量:最小值0,最大值100,最小原始值0,最大原始值100,连接设备PLC,寄存器DECREA100,数据类型short,读写属性为只读,采集频率1000。记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。 催化剂液位变量:最小值0,最大值100,最小原始值0,最大原始值100,连接设备PLC,寄存器DECREA100,数据类型short,读写属性为只读,采集频率1000。记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。 成品油液位变量:最小值0,最大值200,最小原始值0,最大原始值200,连接设备PLC,寄存器INCREA200,数据类型short,读写属性为只读,采集频率1000。记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。 四、实验报告 实验报告包括实验目的、实验内容、设计说明、实验体会等。

delphi中TreeView控件使用

DELPHI中利用TreeView控件建立目录树2000-06-26 00:00:00·-·中国计算机报社 p>Rainbow的话:关于TreeView的使用,还可以参看:联合使用TreeView 组件 TreeView是一个显示树型结构的控件,通过它能够方便地管理和显示具有层次结构的信息,是Windows应用程序的基本控件之一。DELPHI虽然具有比较强大的文件管理功能,提供了多个用于文件管理的标准控件,如DriveComboBox、DirectoryListBox、FileListBox等,通过设置它们的属性,使其建立起联系,甚至不用编写一行程序,我们就可以实现在不同的目录之间进行切换,然而这样的目录切换只适用于进行文件的查找定位,而不能方便地进行目录的浏览,例如我们要从c:\windows目录转到c:\program files目录,就必须返回到根目录才能进行切换,而不能象Windows资源管理器那样任意地在不同的目录之间进行浏览与切换。 要实现在不同目录之间任意切换和浏览,还是需要使用TreeView控件,以下程序就利用DELPHI的TreeView控件来建立目录树。 在该程序中采用的各部件以及界面设计如下图所示: 各部件的主要属性设置如下: 部件属性属性值form name caption form1 ‘目录浏览’ drivecommbobox name visible drivecommbobox1 false filelistbox name visible filetype filelistbox1 false fddirectory imagelist name imagelist1 treeview name images 该程序利用DriveCommboBox控件来获得系统具有的驱动器,并以此作为目录树的最上层,利用FileListBox控件,通过设置其Filetype属性为fdDirectory,可以获得所需的子目录,在TreeView控件的OnExpanding事件中将得到的子目录加到该控件的某一节点下。

C_-TreeView控件使用方法

TreeView 控件显示Node 对象的分层列表,每个Node 对象均由一个标签和一个可选的位图组成。 本文主要介绍C# treeView控件中,添加,修改、删除节点等c# treeview控件的使用方法。 其代码如下: 1.private void Form1_Load(object sender, EventArgs e) 2.{ 3. https://www.360docs.net/doc/e68473948.html,belEdit = true;//可编辑状态。 4. 5.,这个结点是根节点。 6. TreeNode node = new TreeNode(); 7. node.Text = "hope"; 8. treeView1.Nodes.Add(node); 9. TreeNode node1 = new TreeNode(); 10. node1.Text = "hopeone"; 11. TreeNode node11 = new TreeNode(); 12. node11.Text = "hopeoneone"; 13. TreeNode node2 = new TreeNode(); 14. node2.Text = "hopetwo"; 15. node1.Nodes.Add(node11);//在node1下面在添加一个结点。 16. node.Nodes.Add(node1);//node下的两个子节点。 17. node.Nodes.Add(node2); 18. 19. TreeNode t = new TreeNode("basil");//作为根节点。 20. treeView1.Nodes.Add(t); 21. TreeNode t1 = new TreeNode("basilone"); 22. t.Nodes.Add(t1);

ACCESS Treeview控件(树型控件)快速入门

Access 2003:Treeview控件(树型控件)快速入门(2010-06-01 14:26:08) 很多东西看起来很复杂,其实学起来还是蛮简单的。说这样的话不是“站着说话不腰疼”,而是切切实实的感受。很多时候我们会感到恍然大悟,之后便轻车熟路,信手拈来了,这就是前面所说的感觉,正所谓“山重水复疑无路,柳暗花明又一村”。 学这个Treeview控件也是一样。看起来它那么复杂,解释起来连篇累牍,但是我们需要的却往往只是其中一点,然后不断的重复使用这一点,仅仅这样,就能解决不少实际的问题。 使用Treeview的优点很多,比如具有无限扩展性,一个一个的分支,分支下面又可以增加次一级分支,每级分支又可以有很多并列的分支,这样就能满足多样的需求,另外,它还有很好的组织管理性,因为它具有明显的层级关系,很多人会用TreeView来做物料BOM表,可以说把这种特性发挥的淋漓尽致。 建立下面这样一个Treeview并不难,你只需要使用一句代码,多写几次就OK了。 不妨来看看代码,不过不用怕,记住,这里只有一句代码,其它的都在重复! Dim ndeindex As Node Set ndeindex = TreeView0.Nodes.Add(, , "a", "基础资料", "k1")

Set ndeindex = TreeView0.Nodes.Add("a", tvwChild, "a1", "品号资料维护", "k1") Set ndeindex = TreeView0.Nodes.Add(, , "b", "工时资料", "k1") Set ndeindex = TreeView0.Nodes.Add("b", tvwChild, "b1", "观测资料查询", "k1") Set ndeindex = TreeView0.Nodes.Add("b", tvwChild, "b2", "工时查询(依品号)", "k1") Set ndeindex = TreeView0.Nodes.Add("b", tvwChild, "b3", "工时查询(依其它条件)", "k1") Set ndeindex = TreeView0.Nodes.Add(, , "c", "产能模式", "k1") Set ndeindex = TreeView0.Nodes.Add("c", tvwChild, "c1", "FCST产能计算", "k1") Set ndeindex = TreeView0.Nodes.Add("c", tvwChild, "c2", "产能试算", "k1") Set ndeindex = TreeView0.Nodes.Add(, , "d", "成本模式", "k1") 所以,不用太多解释,你应该明白这个函数的参数的意思了吧?第一个参数是指它从属的上级,如果它就是顶级,那就空着;第二个参数表示当前这个是前面的那个上级的下一级,这是系统规定的,照抄就行;第三个参数是当前级别的代号;第四个参数就是当前级别的显示文字,想看到什么就写什么;最后一个是指当前级别前面的图,这个在imagelist控件中,如果你要用,就加这个控件,不用也行,就把这个参数空着。(如果要用,需要现在imagelist中插入图像,然后再treeview中指定使用这个imagelist,k1是在插入图像时指定的图像代号。如下图所示)

组态王软件详细教程 第十讲 控件

第十讲控件 控件的作用 控件可以作为一个相对独立的程序单位被其他应用程序重复调用。控件的接口是标准的,凡是满足这些接口条件的控件,包括其他软件供应商开发的控件,都可以被组态王支持。组态王中提供的控件在外观上类似于组合图素,工程人员只需把它放在画面上,然后配置控件的属性,进行相应的函数连接,控件就能完成复杂的功能。 使用xy控件 本节将建立一个画面,利用组态王提供的x-y控件显示成品油液位和成品罐压力之间的关系曲线。 在工程浏览器左侧选中“画面”,在右侧双击“新建”画面,建立名称为“控件”的画面。 在画面中选择菜单“编辑\插入控件”,如下图所示: 在对话框右侧单击“x-y轴曲线”,然后单击“创建”按钮;

在画面上绘制x-y曲线。然后在画面上双击该曲线控件,弹出设置对话框,设置属性如下: 为使x-y曲线控件实时反应变量值,需要为该控件添加命令语言。在画面空白处点击鼠标右 键,在快捷菜单中选择“画面属性”,弹出“画面属性”对话框。单击其中的“命令语言”按钮。 画面语言包括“显示时”、“存在时”、“隐含时”三种。 →在画面“存在时”命令语言中,输入命令语言如下图所示: 定义完毕后,点击“确认”按钮,然后保存作的设置。 注意两个变量都是可以变化的。

切换画面到运行系统,打开相应画面,控件运行情况如下图所示: 使用窗口控件 单选按钮控件 双击该控件,对控件进行属性配置。 控件名称是唯一标识该控件的一个名称。 变量名称对应一个整型(实型)变量,运行时选择任一个按钮都会使该变量对应一个整数值(0、1、2……)。 可以对该控件设置访问权限。 可以设置按钮个数,修改按钮对应文字。 可以设置排列为横向或纵向。

Treeview 控件的简单应用

Treeview 控件的简单应用: 在VB中Treeview 控件的添加: 通过VB菜单,[工程] -- [部件],然后勾选Microsoft Windows Common Controls 6.0 (SP6),[确定]。 在工具箱里就有了Treeview 控件的图标。 Treeview 控件具有显示类似目录层次结构的格式,在具体应用中很有实际意义。下面简单介绍。 一.在Treeview 控件中添加1个新节点: 在Treeview 控件中添加1个新节点,是通过Treeview 控件的Nodes 集合的Add方法添加一个Node 对象来实现的。 使用方法: Dim nodX As Node Set nodX = Treeview1.Nodes.Add(relative, relationship, key, text, image, selectedimage) 其中参数说明: Relative:可选的。已存在的Node 对象的索引号或键值。新节点与已存在的节点间的关系,可在下一个参数relationship 中找到。可以这样理解relative的作用,是新节点的位置的参照对象。 Relationship:可选的。指定的Node 对象的相对位置,如设置值中所述。本参数是相对参数relative而言。 Key:可选的。唯一的字符串,可用于用Item 方法检索Node。 Text:必需的。在Node 中出现的字符串。 Image:可选的。在关联的ImageList 控件中的图像的索引。 Selectedimage:可选的。在关联的ImageList 控件中的图像的索引,在Node 被选中时显示。 以上参数image和selectedimage,是设置节点文字左边的图形,以后详细举例说明。 例1: Set nodX = TreeView1.Nodes.Add(, , "R", "Root") 这是缺省了relative, relationship, image, selectedimage参数的实例,而key值用“R”,text 值用“Root”。 通常,缺省了relative, relationship的节点,是第1层节点。本例,生成了一个第1层节点,显示的文字为“Root”。 例2: Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C1", "Child 1") nodX.EnsureVisible '这个方法EnsureVisible,使得新添加的子节点后,展开多层显示。 本例:relative为“R”,relationship为tvwChild,key为“C1”,text为“Child 1” 其功能是:建立1个新节点;该新节点是节点key值为“R”的子节点(tvwChild),而该新节点的key值用“C1”,text值用“Child 1”。 我们现在要为TreeView1控件添加新节点,可能有三种情况; 1)添加1个新的第1层节点。 Set nodX = TreeView1.Nodes.Add(, , "R1", "Root1")

最新修改版树形表格(treeviewgrid)控件代码

最新修改版树形表格(treeviewgrid)控件代码 unit srListview; interface uses SysUtils, windows, Classes, Controls, ComCtrls, Types, messages, Graphics, imgList, mask, forms, stdCtrls; type TdataType = (dtString, dtInteger, dtFloat, dtPercentage); Tsrlistview = class(TListView) private { Private declarations }

FhdHandle: integer; FHdNewProc: pointer; FHdOldProc: pointer; FTextoffSet: integer; FclSelected: TColor; FclTitleEnd: TColor; FclTitleBegin: TColor; bmp:

TbitMap; FclBegin: TColor; FclFrame: TColor; function GetHeaderSectionRect(Index: Integer): TRect; procedure HeaderProc(var Message: TMessage); procedure DrawHeaderSection(Cnvs: TCanvas; Column: TListColumn; index: integer; Active, Pressed: Boolean; R: TRect);

树形控件-背景绘制

VC中实现带有背景位图的树型控件 2007-08-02 15:15 1043人阅读评论(6) 收藏举报当前许多应用程序都在使用树型控件时为其添加了背景位图,增强的控件的魅力,然而对于Visual C++编程爱好者来说,使用Visual C++MFC提供的树型控件(CTreeCtrl)本身就是一个难点,至于如何使该控件能够带有背景位图,那就更加是一个令人困惑的问题了。本实例对CTreeCtrl类进行了增强,不仅使它带有背景位图,而且解决了在点击树型控件时背景位图闪动的问题,另外,通过在对话框中使用该控件来显示三级目录,演示了树型控件的基本使用方法。下图为程序编译后的运行效果图: 图一、带背景图的树型控件效果图 一、实现方法 在实现树型控件的背景位图之前,我们首先介绍一下树型控件的基本使用方法。树形控件在系统中大量被使用,例如Windows资源管理器就是一个典型的例子。树形控件可以用于树形的结构,其中有一个根接点(Root)然后下面有许多子结点,而每个子结点上又允许有一个或多个或没有子结点。 MFC中使用CTreeCtrl类来封装树形控件的各种操作,通过调用BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );创建一个窗口,dwStyle中可以使用以下一些树形控件的专用风格:TVS_HASLINES 在父/子结点之间绘制连线;TVS_LINESATROOT 在根/子结点之间绘制连线;TVS_HASBUTTONS 在每一个结点前添加一个按钮,用于表示当前结点是否已被展开;TVS_EDITLABELS 结点的显示字符可以被编辑;TVS_SHOWSELALWAYS 在失去焦点时也显示当前选中的结点;TVS_DISABLEDRAGDROP 不允许Drag/Drop;TVS_NOTOOLTIPS 不使用ToolTip显示结点的显示字符。 在树形控件中每一个结点都有一个句柄(HTREEITEM),同时添加结点时必须提供的参数是该结点的父结点句柄(其中根Root结点只有一个,既不可以添加也不可以删除),利用HTREEITEM InsertItem( LPCTSTR lpszItem, HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST )可以添加一个结点,pszItem为显示的字符,hParent代表父结点的句柄,当前添加的结点会排在hInsertAfter表示的结点的后面,返回

组态王软件介绍教学文案

3、系统软件 3.1组态王软件介绍 本系统采集控制软件选用中国本土软件厂商北京亚控科技发展有限公司生产的,国内最早的商用组态软件“组态王”。截止到2009年底,“组态王”已在国内装机量有10万套,成功地应用于我国工业领域的各行各业,例如石油、化工、电力、冶金、造纸、橡胶、环保、机械制造等等,在中国使用的监控软件中,组态王拥有国内最多的用户。像国外众多的软件一样,组态王软件也经过了一个发展例程: 1995年——组态王V1.0 1996年——组态王V1.2 1997年——组态王V1.51 1998年——组态王V2.0 1999年——组态王V5.1 2000年——组态王V5.1 for Internet 2001年——组态王V6.0、组态王电力专业版6.0 2002年——组态王V6.02 2003年——组态王V6.5 2005年——组态王V6.51 2006年——组态王V6.52 2007年——组态王V6.53 下面介绍组态王通用强大的功能。 3.1.1基本人机界面功能 通过本功能完成画面组态。 1.快速便捷的应用设计 用组态软件构造“监控和数据采集系统”的好处之一就是能大大缩短开发时间,并能保证系统的质量。能快速便捷地进行图形维护和数据采集是此类系统的关键点。组态王正是提供了丰富的快速应用设计的工具。 (1)方便实用的工程管理组态王6.53提供方便实用的管理工具——工程管理器。工程管理器是一个独立的可执行文件,用来管理本机的所有组态王工程,可以实现工程的压缩备份,备份恢复,数据词典的导出导入,实现开发和运行系统的切换等。

(2).集成的开发环境最新设计的组态王工程浏览器为用户提供了便利的集成开发环境。工程设计者可以在工程浏览器中查看工程的各个部分,可以查看画面、数据库、配置通讯驱动程序、设计报表;可以完成系统的大部分配置。 工程浏览器采用树形结构,操作简单方便,容易接受。在工程浏览器中,用户也可以方便地切换到组态王开发环境和运行环境。 (3).功能强大、易用的绘图工具目前用简单的示意性图形已经不足以表示工业现场复杂的生产过程,用户普遍要求更加丰富多彩、生动逼真的画面。为满足此要求,组态王提供了丰富的绘图工具,并尽可能使绘图工具的使用方法容易掌握。 组态王工具箱中提供的绘图工具包括直线、折线、圆弧、矩形(方形)、圆角矩形、圆形(椭圆)等工具。它们的使用方法与一般绘图软件(如“画笔”)大致相同,设计者不需专门的培训即可使用。 (4).灵活的便捷菜单使用组态王的过程中,用户可以随时按下鼠标右键来得到上下文相关的快捷菜单。这种方式比普通的菜单命令更容易使用,将大幅度地提高开发应用系统的效率。 (5).支持无限色和过渡色组态王6.53调色板改为支持无限色,支持二十四种过渡色效果,组态王的任一种绘图工具都可以使用无限色,大部分图形都支持过渡色效果,巧妙地利用无限色和过渡色效果,可以使您轻松构造面无限逼真、美观的画面。 (6).图形对象丰富的动画效果图形界面上的任何对象或复合对象都可以随着过程参数的改变而变换状态,以产生动画效果。图形对象与过程参数建立变化对应关系的过程称为“动画连接”。 图形对象可以按动画连接的要求改变颜色、尺寸、位置、填充百分比等属性。一个图形对象可以同时定义多个连接。把这些动画连接组合起来,应用软件将呈现出令人难以想象的图形动画效果。 图形对象可以进行的“动画连接”包括: 属性变化:包括线属性、填充属性、文本色 位置与大小变化:包括水平和垂直移动、缩放、旋转、填充 值输出:包括模拟值输出、离散值输出、字符串输出 用户输入:包括模拟值输入、离散值输入、字符串输入 滑动杆输入: 包括水平滑动杆输入、垂直滑动杆输入

VCMFC中TREE树控件的使用

VC中树控件的使用 树控件可以对数据进行分层显示。在树控件中,除根节点以外,每个节点都有一个父节点,可以拥有多个兄弟节点和子节点,从而可以是数据以梳妆结构清晰的显示出来。(树控件图标) 一.创建树控件 BOOL Create(DWORD dwStyle , const RECT & rect , CWnd * pParentWnd ,UINT nID); dwStyle 控件的风格rect 控件显示区域 pParantWnd 父窗口指针nID 命令ID值 dwStyle中可以使用以下一些树形控件的专用风格: TVS_HASLINES 在父/子结点之间绘制连线 TVS_LINESATROOT 在根/子结点之间绘制连线 TVS_HASBUTTONS 在每一个结点前添加一个按钮,用于表示当前结点是否已被展开 TVS_EDITLABELS 结点的显示字符可以被编辑 TVS_SHOWSELALWAYS 在失去焦点时也显示当前选中的结点TVS_DISABLEDRAGDROP 不允许Drag/Drop TVS_NOTOOLTIPS 不使用ToolTip显示结点的显示字符 树控件通常和图像列表控件一起使用,在树控件中可以显示图像列表中的图标,即为树控件添加图标。

CImageList * SetImageList(CImageList * pImageList , int nImageListType); pImageList 标识图像列表控件指针 nImageListType 标识图像列表类型 Eg. m_Tree.Create(TVS_LINESATROOT|TVS_HASLINES|TVS_H ASBUTTONS|WS_BORDER); ...... m_ImageList.Create(16,16,ILC_COLOR24|ILC_MASK,1,0); ...... m_Tree.SetImageList(&m_ImageList , LVSIL_NORMAL); 二.向树控件中插入数据 在树形控件中每一个结点都有一个句柄(HTREEITEM),同时添加结点时必须提供的参数是该结点的父结点句柄。 格式: 1.HTREEITEM insertItem(LPTVINSERTSTRUCT lpInsertStruct); lpInsertStruct LPTVINSERTSTRUCT结构指针,LPTVINSERTSTRUCT结构中包含了插入操作的详细信息。 2.HTREEITEM insertItem(UINT nMask ,LPCTSTR lpszItem ,int nImage ,int nSelectdeImage ,UINT nState ,UINT nStateMask , LPARAM

组态王-历史趋势曲线控件例程说明文档

历史趋势曲线1,功能概述常规需求:很多工业现场都会要求显示采集量的趋势曲线,包括实时曲线、历史曲线。 组态王中的趋势曲线的实现方法: 1)利用组态王的“工具箱”中的“实时曲线”、“历史曲线”实现。 2)利用组态王的“插入通用控件”中的“历史趋势曲线”实现。 第一种实现方法的优点在于可以进行WEB的发布,实现通过IE浏览器进行浏览。缺点为支持的曲线笔比较少,许多功能的实现需要通过组态王的函数来实现,使用相对要麻烦。 第二种实现方法的优点在于支持同时绘制16条曲线,功能比较完善,可以在系统运行时动态增加、删除、隐藏曲线,还可以修改曲线属性,实现无级缩放,曲线打印等等。许多功能都不需要通过编写脚本的方法实现,使用比较方便。缺点在于无法进WEB的发布。 工程实例 以一个简单的例程来说明“历史趋势曲线控件”的使用。 操作步骤 1.1创建新工程 打开组态王工程管理器,创建一个新工程。 1.2定义设备 进入工程浏览器,在设备处新建设备,我们在本例中定义一个仿真PLC的设备,设备列表为“PLC-亚控-仿真PLC-串口”,设备名称为“PLC1”。此仿真PLC可以做为虚拟设备与组态王进行通讯。仿真PLC主要有如下的寄存器:自动加1寄存器INCREA,自动减1寄存器DECREA,随机寄存器RADOM,常量寄存器STATIC,常量字符串寄存器STRING,CommErr寄存器。具体的寄存器的使用请参考组态王IO驱动帮助。 1.3定义变量 在数据词典中新建两个IO变量,变量名称分别为“压力”、“流量”,变量类型为IO实数,连接的设备为前面定义的仿真PLC设备“PLC1”,寄存器分别为INCREA100,DECREA100,数据类型为short,读写属性为“只读”。这样压力变量就会从0开始自动加1,其变化范围是0到100,流量变量从100开始自动减1,其变

相关文档
最新文档