《现代电子技术》2006年第14期摘录:王延红等:’Vist,alc一
-
如发现有乱码,请点击下面链接浏览原文
正文摘录:
王延红等:’Vist,alc一.NET中树形控件的使用右依次为O,1,2,3,4。如图2所示。嘻:i辫誊专麟图2图标列表创建一个(;ImageI,ist类的成员变量mTl'eelmages,然后通过其create成员函数即可实现图标列表的创建。图标列表一旦创建,即可一直在项目中使用,即使树形控件的各项已经删除,也不影响该图标列表,但是如果更新时再创建一遍图标列表,树形控件的各项则不能正常插入。使用Set。Imagel。ist()函数描述图标列表的状态并用新的图标更新树形控件。图标列表创建过程如以下语句所示:m—Treelmage.,;.Create(IDB—TREEIMA(jES,20,1,R(;B(O,255,O));m—treectrI.SetImagel.ist(&m—Treelmages,TVSII。一N()R—MAI。):1.3树形控件项目及图标的插入将项目插入树形控件时,首先设置一个HTREE—ITEM结构的结构体变量,之后使用CTree(:trl类的成员函数Inset‘tItem()将项目及图标插入树形控件相应位置,如以下语句所示:m—treec‘trl.SetText(:olor(R【;B(255,255,O);HTREEITEMhItem.hIteml:hltem—mtreectrI.Inset。tltem(”中国市区”,O。1,TVIR()OT):hIteml—mtreectrl.InsertItem(”陕西省”,1,3,11Item):其中,SetText(20lor()函数用于设置树形控件项目文本的颜色;TVIR()()T表示树形控件的根节点;Ins(IrtItem()函数中各参数分别为欲插入的字符串、未选中时的图标标号、选中时的图标标号及父节点句柄;hItem和hIteml分别为根结点及一级节点的节点句柄。依次类推,即可将所需的项名及图标插入树肜控件,形成结构清晰的层次结构。1.4树形控件的操作如何操作树形控件,使其能够响应用户的选择消息在使用中至关重要。要使鼠标左键选中树形控件各项时有不同的反应.需要为树形控件的TVNSEI。CHANGED?肖息添加处理函数()nTvnSelchanged(),并在该函数中使用HitTest()函数判断某项是否被选中,如以下语句所示:CPointmyPoint:UINTuFlags:HTREElTEMhhem—m—treectrI.HitTest(myPoint,&uFlags):当hItem,TVHT()NITEM及uFlags均不为O时,即可通过程序执行相应的操作。在需要右键选中某项即可弹出快捷菜单时,需要添加NMRCLICK消息的处理函数()nRight(2lick(),此时需要用到cTree(:trl。Ex类,在其头文件中包含ctrlext.h和62afxcmn.h即可。使用HitTest()得到当前节点项目,如果该项目不为空则使用I.oadMenu()函数将快捷菜单载人,使用GetSubMenu()函数及TrackPopupMenu()函数弹出菜单。2树形控件与数据库的连接如果树形控件的各项是动态可变的.呵将其放人数据库中进行管理,通过修改数据库来更新树形控件的各项。树形控件的树形结构容易表示数据库的每条内容,易于用可视化的方式浏览数据库。下面以MFCDA()编程的方法来介绍树形控件与数据库的链接。2.1数据库的设计与建立DA()(DataAccess()bjects),即数据访问对象,提供了一种通过程序代码创建和操纵数据库的机制。DA()通过MicrosoftJet数据引擎访问数据库中的数据和数据库的定义。Mira’()softJet是一种数据管理组件,许多数据库工具(如Access和VisualBasic等)都是通过他实现的。DA()通过Micr’osoftJet数据引擎提供了一套对象,包括数据库对象(Database)、表定义(Tabid)ef)、查询定义对象(Quer’yI)e1)和记录集对象(RecordSet)等。在利用MFC创建应用程序框架时无需选择数据库支持。在应用程序中,首先创建一个基于C【)aoRecordset类的数据库类,并将其与所设计的数据库进行关联。在stdafx.h中包含头文件afxdao.h以实现对MFCDA()的支持。之后将树形控件的各父项及子项按一定顺序输入数据库的表中。例如,树形控件中有3级节点,则表的序号可用3位的整数来表示:一级节点依次为lOO、200、300…,二级节点依次为110、120、130…,三级节点为111、112、113…。依此类推。通过按ID号升序进行排列,则子项均在其父项下面,便于将他们循环插入树形控件。如果有更多的层级,则可用更多位数的整数来表示。还可将ID的数据类型由“数字”改为“文本”,则节点ID号中还可加入字母,如11a,11b等。这样每一层级还可添加更多的项。ID号可不连续,便于数据库的扩充和修改。数据库的设计如图3所示。2.2使用数据库管理树形控件项目在将数据库与树形控件进行链接时,首先打开数据库,将数据库指针移到第一条记录。之后判断ID号的第二位是否为O,如果为O,则该项为第一级节点,将其插入根节点下,并设置其位置句柄;如果第二位不为0,则判断其第三位是否为O,为0则该项应插入第二级节点,不为O则插入第三级节点,同时设置其位置句柄。之后将指针向下移一条记录,继续进行判断,直到数据库的最后一条记录为止。若ID号为数字,则通过判断其十位及个位是否为O;若ID号的数据类型为“文本”,则使用(3etAt()函数来判断字符串的某位是否为O。之后从数据库中读出该
阅读此文(图):
点击此处在线翻阅