• PB控制性能TreeView


    TreeView


    【其它】

    ■TreeView控件能够以树型方式来组织项目。不仅显示直观、界面友好。并且项目的管理和操作更为方便,是当前比較流行的一个控件。
    该控件的特点是在较小的空间能够分层次显示大量的数据,而且能够依照用户的要求检索数据。

    该控件具有下面功能:
    通过能够展开或者折叠的节点遍历数据。


    图形化和文本化的节点显示。


    拖放操作。
    包含剪切、复制和粘贴的节点操作。

    典型编程
    通常TreeView控件用来让用户选择数据,或者进行数据的管理。比方。在一个人事管理软件中。使用部门、姓和名这种三层结构查找数据就比較easy。并且能够通过拖拉来进行人事单位的变动。


    首先。在窗体打开时创建该控件。

    以下的脚本向TreeView控件中首先加入最高级别的项目:
    TreeViewItem ltvi_item
    ltvi_item.children = True
    ltvi_item.SelectedPictureIndex = 1
    ltvi_item.Label = "
    餐饮部"
    ltvi_item.Data = "
    餐饮部
    "
    ltvi_item.PictureIndex = 1
    Tv_1.InsertItemLast(0,ltvi_item)
    ltvi_item.Label = "
    接待部
    "
    ltvi_item.Date = "
    接待部
    "
    ltvi_item.PictureIndex = 2
    Tv_1.InsertItemLast(0,ltvi_item)

    上面的脚本加入全部一级项目,能够重复使用上面的脚本。直到加入全然部的一级项目。

    由于这些一级项目在程序执行之前就能够确定。所以能够直接加入。对于数据可能要发生变动的,应该从数据库中提取数据,通过循环来加入项目。

    以下的脚本在用户開始拖动时推断选中项目是否同意拖动。在部门、姓和名三层结构中,仅仅同意拖动最低一层的数据。所以,在BeginDrag事件中编写例如以下脚本:
    TreeViewItem ltvi_source
    If ltvi_source <> 2 Then //
    推断用户选中的是否是职工,仅仅能拖动职工
    This.Drag(Cancel!)
    Else
    //
    保存被拖动项目和其父项目,语句省略
    End If

    当用户在能够接收拖动数据的项目上时,应该高亮显示该项目,以给用户一定的操作暗示信息。首先推断当前鼠标所在的项目能否够接收拖动的数据,假设能够接收则高亮显示该项目。

    DragWithin事件中编写例如以下脚本:
    TreeViewItem ltvi_over
    If GetItem(handle,ltvi_over) = -1 Then
    SetDropHightLight(0)
    Return 0
    End If

    当用户在能够接收拖动数据的项目上释放鼠标时。应该对项目进行一定的处理。

    通常要删除源数据。而且在释放的目标项目中加入该数据。


    【属性】

    **TreeView属性
    ▲Visible
    布尔类型,表示该控件是否可见。

    该属性的缺省值为True

    ▲Enabled
    布尔类型。表示控件是否可用。该属性的缺省值为True

    ▲EditLabels
    布尔类型,表示用户能否够编辑控件中项目的标签。缺省值为False。不同意用户编辑标签。

    ▲HasButtons
    布尔类型,表示是否在父项目的左边显示“+”“-”button来表示是展开还是折叠状态。

    该属性的缺省值为True

    ▲HasLines
    布尔类型。表示在项目之间和父子项目之间是否有线相连。该属性的缺省取值为True

    ▲LinesAtRoot
    布尔类型,表示是否显示连接全部根项目的线条。该属性的缺省值为False

    ▲DeleteItems
    布尔类型,表示是否或许用户在控件中使用Deletebutton来删除项目。

    该属性的缺省取值为False

    ▲DisableDragAndDrop
    布尔类型,表示是否禁止用户进行拖拉操作。该属性的缺省值为True,不同意用户进行拖拉操作。

    ▲HideSelection
    布尔类型,表示当TreeView控件失去焦点时选中的内容是否不保持高亮显示。该属性缺省值为True,表示当TreeView控件失去焦点时不高亮显示当中的选中项目。

    ▲ToolTips
    布尔类型,表示是否显示工具栏气泡帮助。该属性的缺省取值为True

    ▲CheckBoxes
    布尔类型。表示项目左面是否显示复选框。

    缺省为False

    ▲TrackSelect
    布尔类型。表示项目是否进行选择跟踪,也就是当该属性取值为True,鼠标位于某个项目之上时,这项目改变颜色而且在项目以下显示下划线,表示当前项目正准备接收鼠标的操作。该属性的缺省取值为False

    ▲FullRowSelect
    布尔类型。表示当选中项目时是否整行显示。

    该属性的缺省值为False

    ▲SingleExpand
    布尔类型,表示是否仅仅有一个项目能够展开。当该属性取值为True时,当前选中的项目展开,前面选中的项目自己主动折叠。当该属性取值为False时。能够有多个项目同一时候处于展开状态。

    该属性的缺省取值为False

    ▲Border
    布尔类型,表示该控件是否显示边框。

    该属性的缺省取值为True。该属性选中时,边框显示的样式还取决于BorderStyle属性的取值。

    ▲BorderStyle
    枚举类型,表示边框的显示样式。该属性可用的取值有StyleBox!(矩形边框),StyleLowered!(嵌入边框),StyleRaised!(高抬边框)和StyleShadowBox!(阴影矩形边框)。

    ▲SortType
    枚举类型。该属性用来规定控件中项目的排序规则。

    可用的取值有Ascending!(按字典顺序升序排列)Descending!(按字典顺序降序排列)UserDefinedSort!(依据用户在sort事件中的脚本进行排序)Unsorted!(不排序)

    ▲Indent
    Integer
    类型。表示以PowerBuilderUnit为单位的子项目的缩进数。该属性的取值能够为负数,可是这样有可能便子项目左移出控件的边界。缺省取值为0

    ▲Accelerator
    Integer
    类型。取值为控件快捷链的ASCII码值。该属性保存了控件快捷键相应的ASCII码值。

    **TreeViewItem属性
    ▲Bold
    Boolean
    项目标签上的文字以粗体显示

    ▲Childen
    Boolean
    项目是否拥有子项目。能够使用该属性拥有子项目,以便在以后触发ItemPopulateItemExpanding事件

    ▲CutHighLighted
    Boolean
    确定项目是否是要剪切的对象

    ▲Data
    Any
    用户想和项目关联的数据值

    ▲DropHighLighted
    Boolean
    确定项目是不是当前要拖拉的对象

    ▲Expanded
    Boolean
    确定项目是否展开

    ▲ExpandedOnce
    Boolean
    确定项目是否至少被展开过一次。

    当在控件的ItemPopulate事件中加入子项目时该属性非常实用,能够用来推断是否已经加入了子项目

    ▲HasFocus
    Boolean
    推断项目是否获得当前焦点

    ▲ItemHandle
    Long
    项目的句柄。

    一个项目的句柄是惟一的,而且不同项目的句柄也不会有反复

    ▲Label
    Label
    项目的文本标签

    ▲Level
    Integer
    确定TreeView控件中的项目的层次。根层次的取值为1

    ▲OverlayPictureIndex
    Integer
    覆盖图像列表中的图像索引號


    ▲PictureIndex
    Integer
    和项目相连的图像在图标列表中的索引號

    ▲SelectedPictureIndex
    Integer
    当项目选中时与项目相连的图像在图标列表中的索引號

    ▲Selected
    Boolean
    确定项目是否被选中

    ▲StatePictureIndex
    Integer
    项目状态图标的索引號

    【事件】

    ◆BeginDrag
    handle
    当用户在控件上单击鼠标并開始拖动时触发该事件


    ◆BeginLabelEdit
    handle
    当文本标签处于编辑状态并開始进行编辑时触发该事件

    ◆BeginRightDrag
    handle
    当用户在控件上单击鼠标右键并開始拖动控件时触发该事件

    ◆Clicked
    handle
    当用户点击控件时触发

    ◆Constructor
    没有
    当控件创建时触发。触发时机应该是包括控件的窗体打开之前

    ◆DeleteItem
    handle
    当删除项目时触发

    ◆Destructor
    没有
    当控件删除时触发。触发时机应该是在包括控件的窗体关闭时

    ◆DoubleClicked
    handle
    当用户双击控件时触发

    ◆DragDrop
    source ,handle
    当用户拖动一个对象到控件上而且松开鼠标时触发

    ◆DragEnter
    source
    当用户拖动一个其它对象进入控件时触发

    ◆DragLeave
    source
    当用户拖动一个其它对象离开控件时触发

    ◆DragWithin
    source,handle
    当用户拖动一个其它对象在控件中移动时触发

    ◆EndLabelEdit
    handle,newtext
    当用户结束标签的文本编辑时触发

    ◆GetFocus
    没有
    控件获得焦点时触发。

    触发该事件时控件还没有激活

    ◆Help
    Xpos
    Ypos
    当用户点击F1button或者其它方式要获取帮助时触发


    ◆ItemCollapsed
    handle
    当控件的项目折叠后触发

    ◆ItemCollapsing
    handle
    当控件中的项目正在折叠时触发

    ◆ItemExpanded
    handle
    当控件的项目展开后触发

    ◆ItemExpanding
    handle
    当控件的项目正在展开时触发

    ◆ItemPopulate
    handle
    当控件中的项目正在打开其子项目时触发

    ◆Key
    key,keyflag
    当用户点击一个button时触发

    ◆LoseFocus
    没有
    控件失去焦点时触发。该事件触发时控件还是可用的

    ◆Other
    wparm,lparm
    当出现其它没有映射到PB消息上的消息时触发该事件

    ◆RightClicked
    handle
    当用户在控件上点击鼠标右键时触发该事件

    ◆RightDoubleClicked
    handle
    当用户在控件上双击鼠标右键时触发该事件

    ◆SelectionChanged
    oldhandle,newhandle
    某项目被选中时触发

    ◆SelectionChanging
    oldhandle,newhandle
    某项目被选中之前触发

    ◆Sort
    handle1,handle2
    当控件被排序时每次比較都触发该事件


    【函数】
    ★AddPicture
    TreeView控件中加入图标或者位图。该函数的语法格式为controlname.AddPicture( picturename )

    ★AddStatePicture
    TreeView控件的状态图标列表中加入指定的位图或者图标。

    该函数的语法是controlname.AddStatePicture ( picturename )

    ★DeleteItem
    TreeView控件中指定的项目及其子项目(假设有的话)都删除。函数的语法是treeviewname.DeleteItem ( itemhandle )。当中itemhandle保存的是项目的惟一句柄,在该控件的非常多事件中都有handle这个參数,能够直接使用,也能够使用其它函数首先读取句柄。

    ★DeletePicture(s)
    删除控件中指定索引號的图片。函数格式为controlname.DeletePicture ( index )。函数controlname.DeletePictures( )用来删除控件中全部的图片。

    ★DeleteStatePicture(s)
    删除控件中指定索引號的状态图标,函数的格式是controlname.DeleteStatePicture (index )。函数controlname.DeleteStatePictures ( )用来删除控件中全部的状态图标。

    ★EditLabel
    该函数的语法是treeviewname.EditLabel ( itemhandle ),作用是将句柄为itemhandle的项目的标签置为编辑状态。

    ★ExpandAll
    该函数的语法是treeviewname.ExpandAll ( itemhandle ),作用是将句柄为itemhandle的项目下的全部子项目展开。展开控件中的全部项目,能够对根级项目使用该函数。

    ★ExpandItem
    函数的语法是treeviewname.ExpandItem ( itemhandle ),作用是展开句柄为itemhandle的项目。该函数ExpandItem仅展开指定的项目,而不像ExpandAll那样展开指定项目的全部子项目。

    ★FindItem
    语法是treeviewname.FindItem(navigationcode,itemhandle)。作用是查找和Itemhandle项目的相对位置为navigationcode指定模式的项目。

    參数navigationcode是一个枚举型变量。可用的取值例如以下所看到的。


    取 值 含 义
    RootTreeItem!
    查找第一个根级项目,假设控件中还没有加入不论什么项目则返回-1
    NextTreeItem!
    查找处于同一级别的下一个项目,假设没有下一个项目则返回
    -1
    PreviousTreeItem!
    查找处于同一个级别的前一个项目,假设没有前一个项目则返回
    -1
    ParentTreeItem!
    查找父项目的句柄。假设是根项目则返回
    -1
    ChildTreeItem!
    查找第一个子项目,假设项目是折叠的,则将项目置为打开状态。

    假设没有子项目则返回-1
    FirstVisibleTreeItem!
    查找控件中第一个可视项目,注意滚动栏距顶可视项目的位置

    NextVisibleTreeItem!
    查找下一个展开项目,假设下一个展开项目在控件的 可视项目的位置
    PreviousVisibleTreeItem!
    查找前一个展开的项目
    CurrentTreeItem!
    查找当前选中的项目。假设当前没有选中的不论什么项目则返回-1
    DropHighLightTreeItem!
    查找近期被设置了DropHightLighted属性的项目

    灵活运用如上所列的取值。能够非常轻松地遍历TreeView中的全部项目。

    ★GetItem
    函数语法是treeviewname.GetItem ( itemhandle, item),作用是将句柄由參数itemhandle指定的项目的数据检索到TreeViewItem结构的參数item中。

    ★InsertItem
    函数语法是treeviewname.InsertItem(handleparent,handleafter,label,pictureindex ),作用是将标签为label的项目插入到控件中。插入位置在handleparent指定句柄的项目之下作为它的子项目,句柄为handleafter同级项目的后面。该函数还有第二种语法格式是treeviewname.InsertItem ( handleparent, handleafter, item )。作用是将TreeViewitem类型的变量item指定的项目插入到控件的指定位置,另外两个參数的含义和前面全然同样。

    ★InsertItemFirst
    treeviewname.InsertItemFirst (handleparent,label,pictureindex )
    或者treeviewname.InsertItemFirst ( handleparent, item )都能够。前面一种语法中,插入的项目标签内容由label指定,图标由pictureindex指定。在后面一种语法中。插入项目的属性能够更具体地设定,插入的位置也是由handleparent參数指定。

    ★InsertItemLast
    treeviewname.InsertItemLast(handleparent,label,pictureindex)
    或者treeviewname.InsertItemLast ( handleparent, item )两种语法格式,都能够将指定的项目插入到由參数handleparent指定的项目下并作为它的最后一个子项目。

    插入项目的属性或者由TreeViewItem类型的參数item具体设定。或者由label指定标签、pictureindex指定项目的图标。

    ★InsertItemSort
    treeviewname.InsertItemSort ( handleparent, label, pictureindex )
    或者treeviewname.InsertItemSort ( handleparent, item )两种语法格式,都能够将指定的项目按一定的排序方式插入到控件中。參数的含义和前面函数中參数的含义同样。

    ★SelectItem
    函数语法treeviewname.SelectItem ( itemhandle ),作用是选中由句柄itemhandle指定的项目。

    ★SetItem
    函数语法treeviewname.SetItem ( itemhandle, item ),作用是用TreeViewItem结构类型的參数item来改动itemhandle句柄指定的项目。

    版权声明:本文博主原创文章。博客,未经同意不得转载。

  • 相关阅读:
    ERROR 1045 (28000): Access denied for user root@localhost (using password:
    MySQL: InnoDB 还是 MyISAM?
    PHP系统函数
    为什么分离数据库软件和数据库服务?
    C#索引器的作用及使用
    asp.net 中Session的运用,及抛出错误“未将对象引用设置到对象的实例”
    C#父类对象和子类对象之间的转化
    C#中属性简写原理
    c# 中Intern的作用
    C# 中ref和out的区别
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4876379.html
Copyright © 2020-2023  润新知