PB TreeView 属性,事件详解(转)

2024-04-13 07:08
文章标签 详解 属性 事件 treeview pb

本文主要是介绍PB TreeView 属性,事件详解(转),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

PB TreeView 属性,事件详解(转)

 

本文转自:http://chbin95233.blog.163.com/blog/static/32075111201010573448815/

■TreeView控件可以以树型方式来组织项目,不仅显示直观、界面友好,而且项目的管理和操作更为方便,是当前比较流行的一个控件。
该控件的特点是在较小的空间可以分层次显示大量的数据,并且可以按照用户的要求检索数据。该控件具有以下功能:
通过可以展开或者折叠的节点遍历数据。
图形化和文本化的节点显示。
拖放操作。
包括剪切、复制和粘贴的节点操作。

■典型编程
通常TreeView控件用来让用户选择数据,或者进行数据的管理。比如,在一个人事管理软件中,使用部门、姓和名这样的三层结构查找数据就比较容易,而且可以通过拖拉来进行人事单位的变动。
首先,在窗口打开时创建该控件。下面的脚本向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
布尔类型,表示是否在父项目的左边显示“+”和“-”按钮来表示是展开还是折叠状态。该属性的缺省值为True。

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

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

▲DeleteItems
布尔类型,表示是否也许用户在控件中使用Delete按钮来删除项目。该属性的缺省取值为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
项目是否拥有子项目,可以使用该属性拥有子项目,以便在以后触发ItemPopulate和ItemExpanding事件

▲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
当用户点击F1按钮或者其他方式要获取帮助时触发

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

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

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

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

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

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

◆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句柄指定的项目。

这篇关于PB TreeView 属性,事件详解(转)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/899457

相关文章

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

禁止平板,iPad长按弹出默认菜单事件

通过监控按下抬起时间差来禁止弹出事件,把以下代码写在要禁止的页面的页面加载事件里面即可     var date;document.addEventListener('touchstart', event => {date = new Date().getTime();});document.addEventListener('touchend', event => {if (new

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

滚雪球学Java(87):Java事务处理:JDBC的ACID属性与实战技巧!真有两下子!

咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE啦,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~ 🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!! 环境说明:Windows 10

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

嵌入式Openharmony系统构建与启动详解

大家好,今天主要给大家分享一下,如何构建Openharmony子系统以及系统的启动过程分解。 第一:OpenHarmony系统构建      首先熟悉一下,构建系统是一种自动化处理工具的集合,通过将源代码文件进行一系列处理,最终生成和用户可以使用的目标文件。这里的目标文件包括静态链接库文件、动态链接库文件、可执行文件、脚本文件、配置文件等。      我们在编写hellowor

LabVIEW FIFO详解

在LabVIEW的FPGA开发中,FIFO(先入先出队列)是常用的数据传输机制。通过配置FIFO的属性,工程师可以在FPGA和主机之间,或不同FPGA VIs之间进行高效的数据传输。根据具体需求,FIFO有多种类型与实现方式,包括目标范围内FIFO(Target-Scoped)、DMA FIFO以及点对点流(Peer-to-Peer)。 FIFO类型 **目标范围FIFO(Target-Sc

019、JOptionPane类的常用静态方法详解

目录 JOptionPane类的常用静态方法详解 1. showInputDialog()方法 1.1基本用法 1.2带有默认值的输入框 1.3带有选项的输入对话框 1.4自定义图标的输入对话框 2. showConfirmDialog()方法 2.1基本用法 2.2自定义按钮和图标 2.3带有自定义组件的确认对话框 3. showMessageDialog()方法 3.1

脏页的标记方式详解

脏页的标记方式 一、引言 在数据库系统中,脏页是指那些被修改过但还未写入磁盘的数据页。为了有效地管理这些脏页并确保数据的一致性,数据库需要对脏页进行标记。了解脏页的标记方式对于理解数据库的内部工作机制和优化性能至关重要。 二、脏页产生的过程 当数据库中的数据被修改时,这些修改首先会在内存中的缓冲池(Buffer Pool)中进行。例如,执行一条 UPDATE 语句修改了某一行数据,对应的缓