PowerBuilder学习笔记之8.5高级窗口控件
1.列表框控件
列表框控件(ListBox)、图片列表框控件(PictureListBox)、下拉列表框控件(DropDownListBox)以及下拉图片列表框控件(DropDownPictureListBox)。
作用:提供给用户一组可选或可视的选项,运行用户从选择一项或多项。
列表框类控件的通用属性及说明:

列表框控件命名默认前缀:lb_
图片列表框控件命名默认前缀:plb_
下拉列表框控件命名默认前缀:ddlb_
下拉图片列表框控件命名默认前缀:ddplb_
1.1列表框控件的常用属性、事件和函数
1.列表框控件常用属性
(1)Sorte属性:指定列表框中的列表项是否自动按升序次序排序。
(2)MultiSelect属性:指定用户是否能够同时选择多个列表项,但只能通过鼠标单击来选择。
(3)ExtendedSelect属性:指定用户能否同时选择多个列表项。Shift+鼠标选中连续多项,Ctrl后单击选择不连续的多项,或拉出矩形框选择多项。
2.列表框控件的常用事件
(1)DoubleClicked事件:双击事件
(2)SelectionChanged事件:当选择了列表框中某个列表项时触发。
3.列表框控件的常用函数
(1)AddItem()函数:在列表项的尾部增加一个新的列表项。
格式:AddItem(String item) 例子:lb_1.additem("第五项")
(2)deleteitem():删除指定的列表项
格式: deleteitem(Int index)
其中,index为要删除列表项的位置编号
例如:lb_1.deleteitem(3) //删除第三个列表项
(3)SelectedIndex():返回列表框中所需列表项的索引,当选中多个时,返回第一个的索引
返回值为Integer。例子:Integer li_no li_no=lb_1.SelectedIndex()
(4)SelecteIndex():返回列表框中所选控件的文本。当有多个列表项被选中时,该函数返回第一个选中列表项的文本。
用法同上
(5)Text():返回列表框中指定选项的文本
格式:Text(Int index)
返回值为String
例:String sq
sq=lb_1.text(3)
(6)TotalItems():返回列表框中列表项的总数
返回值为Integer
(7)TotalSelected():返回列表框中选中的列表项的总数。
返回值为Integer
(8)State()函数:确定列表框中某项是否被选中(是否高亮显示)。
格式:
State(Int index)
如果index参数指定的列表项处于选中状态(高亮显示),则函数返回1;否则函数返回0。如果index参数指定的不是一个有效的列表项,则函数返回-1。如果任何参数的值为Null,则State()函数返回Null。
例子:Integer li_s			
li_s = lb_1.State(3)
IF li_s=1 THEN 
	...
END IF
(9)InsertItem()函数:在指定索引指示的列表项前插入一个新项。
格式:
InsertItem(String item,Int index)
其中,item为要插入的列表项,index为索引号。
例如,将Computer插入第三项:
lb_1.InsertItem("Computer",3)
(10)SelectItem()函数。
格式1:SelectItem(String item,Int index)
从index处开始查找item,若找到,则选中该项并返回选中项的索引。
例如:
Int r1
r1=lb_1.selectitem("book",1)
格式2:
SelectItem(Int index)
选中index项。若index为0,则取消选中该列表框中的选择项。
例如:
Int r1		
r1=lb_1.selectitem(3)
(11)SetState()函数。
格式:
setstate(Int index,boolean state)
设置index项为高亮显示或取消高亮显示。其中,state的值为True时,设置为高亮显示;state的值为False时,设置为取消高亮显示。index=0表示所有项。
例如:
lb_1.setstate(2,TRUE)				//将第二项高亮显示
lb_1.setstate(0,FALSE)				//取消lb_1中所有项的高亮显示
(12)FindItem()函数:在项目列表中查找指定索引后面与指定串匹配的列表项。
格式:
FindItem(String text,Int index)
函数执行成功时返回第一个匹配项的索引。其中,text为要查找的开头字符串;index是开始查找的列表项的前一个索引。若要查找所有列表项,则将该参数指定为0。
例如,从第二项开始查找以boo开头的列表项:
Int r
r=lb_1.finditem("boo",1)
2.列表视图控件和树状视图控件
1.列表视图控件(ListView)
列表视图控件是一种使用图标和文本标签集来表达数据的高级控件。命名默认前缀:lv_
1.1列表视图控件属性
“ListView”控件的属性选项卡中有七个选项页

列表视图控件的“General”页中的一些独特属性及说明

列表视图控件的常用函数
| 函 数 | 功 能 | 返 回 值 | 参 数 说 明 | 例 子 | 
| listviewname. | 添加一个大图标列表的图标 | 成功时返回添加的大图标的索引,失败时返回-1 | listviewname:Listview控件的名称;picturename:添加的图标的名称 | 为Listview控件“lv_1”添加一个大图标pic.ico: Integer index index=lv_1.AddLargePicture("pic.ico") | 
| listviewname. | 删除一个大图标列表的图标 | 成功时返回1,失败时返回-1 | listviewname:Listview控件的名称;index:大图标的索引 | 删除第1项大图标: lv_1.DeleteLargePicture(1) | 
| listviewname.  width) | 在报告显示形式下添加一个指定的文本标签、对齐方式和宽度的特定栏目 | 成功时返回添加的栏目的索引,失败时返回-1 | listviewname:Listview控件名称;label:添加的栏目的名称;alignment:添加的项目的对齐方式;width:添加的项目的宽度 | 在Listview控件的事件中,添加三个栏目: This.AddColumn("名称",Left!,1000) This.AddColumn("尺寸" ,Left!,400) This.AddColumn("日期",Left!,300) | 
| listviewname. | 对Listview控件中的项目进行排序 | 成功时返回1,失败时返回-1 | listviewname:Listview控件名称;sorttype:排序方式;column:指定排序的栏目 | 对第2列按升序排序: lv_1.SetRedraw(FALSE) lv_1.Sort(Ascending! , 2) lv_1.SetRedraw(TRUE) | 
| listviewname. | 读取全部项目数 | 成功时返回项目数,失败时返回-1 | 读取“lv_1”项目数: Integer Total Total = lv_1.TotalItems() | |
| listviewname. | 读取全部栏目数 | 成功时返回栏目数,失败时返回-1 | 读取“lv_1”栏目数: Integer Total Total = lv_1.TotalColumns() | |
| listviewname. | 读取选中的项目数 | 成功时返回项目数,失败时返回-1 | 读取“lv_1”选中的项目数: Integer Selected Selected=lv_1.TotalSelected() | |
| listviewname. | 读取当前选中项目的索引号 | 成功时返回选中项目的索引号,没有选中或失败时返回-1 | 读取“lv_1”选中的项目的索引号: Integer li_Index li_Index=lv_1.SelectedIndex() | |
| listviewname. picindex) | 添加项目 | 成功时返回添加项目的索引,失败时返回-1 | label:添加的项目的名称;picindex:图片索引号 | 添加项目: lv_1.AddItem("数学系",3) | 
| listviewname.InsertItem(index,label,picindex) | 插入项目 | 成功时返回插入项目的索引,失败时返回-1 | index:要插入的项目索引号;label:添加的项目的名称;picindex:图片索引号 | 插入项目: lv_1.InsertItem(2, "CCTV",4) | 
| listviewname.DeleteItem(index) | 删除项目 | 成功时返回1,失败时返回-1 | index:要删除的项目索引号 | 删除项目: lv_1.DeleteItem(3) | 
| listviewname. | 设置指定项、指定栏目的标签 | 成功时返回1,失败时返回-1 | index:要设置的项目索引号;column:栏目号;label:要设置的项目的标签 | 设置指定项、指定栏目的标签 lv_1.SetItem(1,1,"刘明") lv_1.SetItem(1,2,"男") lv_1.SetItem(1,3,"23") lv_1.SetItem(1,4,"南京师大") | 
| listviewname. GetItem index, column,label) | 读取指定索引、指定栏目的标签 | 成功时返回1,失败时返回-1 | index:要读取的项目索引号;column:栏目号;label:读取的项目的标签 | 读取第3个项目的第2栏的内容: String s1 Lv_1.GetItem(3,2,s1) | 
ListView控件的常用事件

2.树状视图控件
树状视图控件(TreeView)是以树图形式组织项目的,具有直观和易于管理的特点。命名默认前缀:tv_
1.树状视图控件的常用属性
(1)“HasButtons”属性:指定是否在父节点列表项前显示“+”和“-”按钮,取值为True或False。用户单击“+”按钮时将扩展列表项,单击“-”按钮时将折叠列表项。
(2)“HasLines”属性:指定是否用连线将列表项连接起来,取值为True或False。
(3)“Indent”属性:值为Integer类型,指定下层节点(列表项)的缩进宽度,以PBU为单位。可以使用负值,此时节点被缩进到该控件的边界外边。
(4)“LinesAtRoot”属性:指定是否使用连线连接所有根节点,取值为True或False。
(5)“SortType”属性:取值为枚举类型,指定列表项按标题名排序的方式。有效取值为“Ascending!”“Descending!”“UserDefined!”“Unsorted!”
(6)PictureName[ ]:String型数组,表示该控件使用的图像文件名。可以在创建树状视图时,通过其“Picture”属性页加入这些图像文件。
2.树状视图控件的常用事件有以下九种。
(1)“SelectionChanged”事件:在用户选择新的选项后触发。该事件是树状视图控件比较常用的事件。
(2)“SelectionChanging”事件:当用户选择新的选项时触发。该事件返回1时阻止用户改变当前选项,返回0时允许用户改变当前选项。
(3)“ItemCollapsed”事件:在某个列表项被折叠后触发。
(4)“ItemCollapsing”事件:在某个列表项要被折叠时触发。该事件返回1时阻止折叠,返回0时完成折叠。
(5)“ItemExpanded”事件:在某个列表项被展开后触发。
(6)“ItemExpanding”事件:在某个列表项要被展开时触发。该事件返回1时阻止展开,返回0时完成展开。
(7)“ItemPopulate”事件:当第1次展开某列表项时触发。该事件返回1时阻止展开,返回0时完成展开。
(8)“DoubleClicked”事件:双击鼠标时触发。
(9)“RightClicked”事件:右击鼠标时触发。
3.树状视图的常用函数
(1)AddPicture()函数。
格式:
AddPicture(String picturename)
在图像列表中增加图片文件,返回值为新加入的图片文件索引号。
(2)CollapseItem()函数。
格式:
CollapseItem(Long itemhandle)
折叠指定的列表项(节点)。其中,itemhandle为要折叠的列表项的句柄(一个长整数,每个节点都有一个唯一代表该节点的句柄)。成功时返回1,失败时返回-1。
(3)ExpandAll()函数。
格式:
ExpandAll(Long itemhandle)
展开指定列表项(节点)的所有各级子项(子节点)。itemhandle为要展开各级子项的列表项的句柄。
(4)ExpandItem()函数。
格式:
ExpandItem(Long itemhandle)
展开指定的列表项(节点)。itemhandle为要展开列表项的句柄。
ExpandItem()函数只展开指定的列表项,而不展开该列表项下的各级子列表项。
(5)FindItem()函数。
格式:
FindItem(navigationcode,itemhandle)
根据列表项位置返回指定列表项的句柄,失败时返回-1。其中,itemhandle为开始查找的列表项的句柄,Long型;navigationcode为要查找的节点,枚举类型,取值如下。
① RootTreeItem!:根节点。
② NextTreeItem!:与itemhandle列表项同一个父节点中同一层的下一个列表项。
③ PreviousTreeItem!:与itemhandle列表项同一个父节点中同一层的前一个列表项。
④ ParentTreeItem!:itemhandle列表项的父节点。
⑤ ChildTreeItem!:itemhandle节点的第一个子列表项。
⑥ CurrentTreeItem!:当前所选列表项。
例如,得到树状视图控件中当前所选项的句柄:
Long tv_curt
tv_curt=tv_1.FindItem(CurrentTreeItem!, 0)
例如,如果希望展开树状视图控件中的所有列表项,则以根节点的句柄为参数调用ExpandAll()函数:
Long tv_rt						//查找根节点的句柄
tv_rt = tv_1.FindItem(roottreeitem!,0)			//展开所有节点
tv_1. ExpandAll(tv_rt)
(6)GetItem()函数。
格式:
GetItem(itemhandle,item)
得到指定句柄的完整列表项。其中,itemhandle为要得到完整信息的列表项的句柄,为Long型;item为TreeViewItem类型的变量,用于保存itemhandle参数指定列表项的完整信息。
使用GetItem()函数可以得到指定列表项的完整信息,如标题label、句柄itemhandle、使用的图片索引pictureindex等。
(7)InsertItemLast()函数。
格式:
InsertItemLast(handleparent,label,pictureindex)
在末尾加入新节点。其中,handleparent为指定要插入列表项父节点的句柄;label为新插入列表项的标题,即显示在树状视图控件中的文字;pictureindex为新插入列表项标题前显示的图片的索引号。返回值为Long型。函数执行成功时返回新插入列表项的句柄;发生错误时返回-1。
例如,下面的代码在当前列表项后面加入一个列表项“计算机系”,新加入列表项与当前列表项位于同一个层次上(有相同父节点):
Long tv_ct, tv_parent				//首先求当前列表项的句柄
tv_ct = tv_1.FindItem(CurrentTreeItem!,0)		//再求当前列表项父节点的句柄
tv_parent = tv_1.FindItem(ParentTreeItem!,tv_ct)		//加入新列表项
tv_1.InsertItemLast(tv_parent,"计算机系",2)
(8)InsertItem()函数。
格式:
InsertItem(handleparent,handleafter,label,pictureindex)
插入新节点。其中,handleparent指定要插入列表项父节点的句柄;handleafter指定在同一层中句柄为handleafter的项后面插入新项;label为新插入列表项的标题,即显示在树状视图控件中的文字;pictureindex为新插入列表项标题前显示的图片的索引号。返回值为Long型。函数执行成功时返回新插入列表项的句柄,发生错误时返回-1。
例如,下面的代码在当前列表项后面插入一个列表项,新插入列表项与当前列表项位于同一个层次上:
Long tv_ct, tv_parent				//得到当前列表项的句柄
tv_ct = tv_1.FindItem(currenttreeitem!,0)			//得到当前列表项父列表项的句柄
tv_parent = tv_1.FindItem(parenttreeitem!,tv_ct)		//插入新列表项
tv_1.InsertItem(tv_parent,tv_ct,"计算机系",2)
(9)InsertItemFirst()函数。
格式:
InsertItemFirst(handleparent,label,pictureindex)
插入新节点。其中,handleparent指定要插入列表项父节点的句柄;label为新插入列表项的标题,即显示在树状视图控件中的文字;pictureindex为新插入列表项标题前显示的图片的索引号。返回值为Long型。函数执行成功时返回新插入列表项的句柄,发生错误时返回-1。
(10)SelectItem()函数。
格式:
SelectItem(Long itemhandle)
选中指定的列表项(高亮显示该列表项),使其成为当前列表项。
(11)SetItem()函数。
格式:
SetItem(itemhandle, item)
设置指定列表项的数据。其中,itemhandle为要设置列表项数据节点的句柄;item为TreeViewItem对象指定新的数据值。
例如,要将当前列表节点的标签“计算机系”改为“南京师大计算机系”:
Long tv_ct
treeviewitem im				                   //得到当前列表项的句柄
tv_ct = tv_1.FindItem(currenttreeitem!,0)
GetItem(tv_ct, im)
Im.label="南京师大计算机系"
SetItem(tv_ct,im)
(12)Sort()函数。
格式:
Sort(itemhandle,sorttype)
节点排序。其中,itemhandle指定要对其子列表项排序的列表项的句柄;sorttype指定排序方式,取值为Ascending!、Descending!和UserDefined!。
Sort()函数只对指定列表项下面第一层子项进行排序。
(13)SortAll()函数。
格式:
SortAll(itemhandle, sorttype)
通常在窗口的“Open”事件中为“TreeView”加上根节点,在“TreeView”控件的“SelectionChanged”事件或其他事件中编写加入子节点的代码。
当然也可以在窗口的“Open”事件中生成“TreeView”的全部子节点。
PowerBuilder学习笔记之8.5高级窗口控件的更多相关文章
- Win32+API学习笔记:创建基本的窗口控件
		创建一个标签 CreateWindowEx(0, "static", "姓名:", ... 
- IOS学习笔记(四)之UITextField和UITextView控件学习
		IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ... 
- .NET MVC 学习笔记(七)— 控制input控件
		.NET MVC 学习笔记(七)— 控制input控件 画面中有时候需要输入数字,这时就需要控制input的输入.以下为保留两位有效数字. /* * 初始化数字输入 */ function initD ... 
- Winform控件学习笔记【第二天】——常用控件
		背景:期末考试刚过就感冒了,嗓子火辣辣的,好难受.但是一想起要学习总结就打起精神来了,Winform控件网上也没有多少使用教程,大部分都是自己在网上零零散散的学的,大部分用的熟了,不总结会很容易忘得. ... 
- Android学习笔记(九)——布局和控件的自定义
		//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! View是 Android中一种最基本的 UI组件,它可以在屏幕上绘制一块矩形区域,并能响应这块区域的各种事件 ... 
- Dynamic CRM 2013学习笔记(八)过滤查找控件 (类似省市联动)
		我们经常要实现类似省市联动一样的功能,常见的就是二个查找控件,一个选择了省后,另一个市的查找控件就自动过滤了,只显示当前省下的市,而不是所有的市.当然这是最简单的,实际工作中还有更复杂的功能要通过过滤 ... 
- Windows程序设计学习笔记(四)自绘控件与贴图的实现
		Windows系统提供大量的控件供我们使用,但是系统提供的控件样式都是统一的,不管什么东西看久了自然会厌烦,为了使界面更加美观,添加一些新的东西我们需要自己绘制控件. 控件在默认情况下并不进行自绘,如 ... 
- 【AngularJS学习笔记】封装一些简单的控件(封装成Html标签)
		bootstrap有强大的指令系统,可以自定义一些属性,基本知识请移步:http://angularjs.cn/A00r http://www.cnblogs.com/lvdabao/p/33916 ... 
- ios学习笔记第三天之UI控件
随机推荐
- google chrome 浏览器插件
			如果感觉浏览器(chrome)的背景是白色太亮太刺眼,可以先在 设置->外观->主题背景 里选择 oceanic,将浏览器头部颜色设置为海蓝色.然后再安装插件 “眼睛护航”,改变所有网页的 ... 
- html5中 input的pattern属性 和 details/summary元素
			html5--3.21 课程小结与其他新增元素 一.总结 一句话总结: input的pattern属性可以设置正则验证,比如检测学号的位数和数字区间 details/summary元素配合起来可以做元 ... 
- ubuntu进程监视器htop  清除黄色内存(缓存)
			大意是:对于CPU显示条: 蓝色为:低优先级的线程 绿色为:正常优先级线程 红色为:内核线程 对于内存显示条: 蓝色为:缓冲区(buffers) 绿色为:已使用的内存 (橘)黄色为:高速缓存(cach ... 
- oracle tablespace pctfree pctused
			二.oracle pctfree和pctused详解 一.建立表时候,注意PCTFREE参数的作用 PCTFREE:为一个块保留的空间百分比,表示数据块在什么情况下可以被insert,默认是10,表示 ... 
- 009 轮播图,offset系列
			关于使用JS做轮播图,使用一个章节进行笔迹. 一:简单轮播图 1.程序 <!DOCTYPE html> <html lang="en"> <head& ... 
- 创建WebApi Odata v3 终结点
			开放数据协议(OData) 是用于 web 的数据访问协议. OData 提供统一的方法来构造数据. 查询的数据和操作该数据集通过 CRUD 操作 (创建. 读取. 更新和删除). OData 支持 ... 
- 读《中国人工智能与 IJCAI 的 40 周年,还有哪些未曾对外诉说的故事?》
			原文地址: https://mbd.baidu.com/newspage/data/landingsuper?context=%7B%22nid%22%3A%22news_10186783044528 ... 
- SBX(Simulated binary crossover)模拟二进制交叉算子和DE(differential evolution)差分进化算子
			一起来学演化计算-SBX(Simulated binary crossover)模拟二进制交叉算子和DE(differential evolution)差分进化算子 觉得有用的话,欢迎一起讨论相互学习 ... 
- redis八大应用场景
			1.缓存 缓存现在几乎是所有中大型网站都在用的必杀技,合理的利用缓存不仅能够提升网站访问速度,还能大大降低数据库的压力.Redis提供了键过期功能,也提供了灵活的键淘汰策略,所以,现在Redis用在缓 ... 
- Swift4.0复习控制流语句
			1.do语句块: Swift编程语言中可使用 do 语句块作为类似C语言中的一般语句块进行使用.与C语言的语句块类似,Swift中的 do 语句块单独作为一个作用域,该语句块中声明的局部对象在其外部将 ... 
