• 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.
    AddLargePicture
    (picturename)

    添加一个大图标列表的图标

    成功时返回添加的大图标的索引,失败时返回-1

    listviewname:Listview控件的名称;picturename:添加的图标的名称

    为Listview控件“lv_1”添加一个大图标pic.ico:

    Integer index

    index=lv_1.AddLargePicture("pic.ico")

    listviewname.
    DeleteLargePicture
    (index)

    删除一个大图标列表的图标

    成功时返回1,失败时返回-1

    listviewname:Listview控件的名称;index:大图标的索引

    删除第1项大图标:

    lv_1.DeleteLargePicture(1)

    listviewname.
    AddColumn
    (label,lignment,

    width)

    在报告显示形式下添加一个指定的文本标签、对齐方式和宽度的特定栏目

    成功时返回添加的栏目的索引,失败时返回-1

    listviewname:Listview控件名称;label:添加的栏目的名称;alignment:添加的项目的对齐方式;width:添加的项目的宽度

    在Listview控件的事件中,添加三个栏目:

    This.AddColumn("名称",Left!,1000)

    This.AddColumn("尺寸" ,Left!,400)

    This.AddColumn("日期",Left!,300)

    listviewname.
    Sort(sorttype,
    { column })

    对Listview控件中的项目进行排序

    成功时返回1,失败时返回-1

    listviewname:Listview控件名称;sorttype:排序方式;column:指定排序的栏目

    对第2列按升序排序:

    lv_1.SetRedraw(FALSE)

    lv_1.Sort(Ascending! , 2)

    lv_1.SetRedraw(TRUE)

    listviewname.
    TotalItems()

    读取全部项目数

    成功时返回项目数,失败时返回-1

     

    读取“lv_1”项目数:

    Integer Total

    Total = lv_1.TotalItems()

    listviewname.
    TotalColumns()

    读取全部栏目数

    成功时返回栏目数,失败时返回-1

     

    读取“lv_1”栏目数:

    Integer Total

    Total = lv_1.TotalColumns()

    listviewname.
    TotalSelected()

    读取选中的项目数

    成功时返回项目数,失败时返回-1

     

    读取“lv_1”选中的项目数:

    Integer Selected

    Selected=lv_1.TotalSelected()

    listviewname.
    SelectedIndex()

    读取当前选中项目的索引号

    成功时返回选中项目的索引号,没有选中或失败时返回-1

     

    读取“lv_1”选中的项目的索引号:

    Integer li_Index

    li_Index=lv_1.SelectedIndex()

    listviewname.
    AddItemlabel,

    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.
    SetItem(index,
    column,label)

    设置指定项、指定栏目的标签

    成功时返回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”的全部子节点。

  • 相关阅读:
    C# .Net WinForm控件GDI+重绘位置错乱
    查询视图对应的基表名以及视图字段和对应的基表字段名
    解决在高分屏下开发winform界面变形
    ping命令工具:同时ping多个IP
    SmartAssembly批处理用法
    C#二维数组的初始化和存取
    win7 X64 进程名称不一致,导致杀进程失效!
    在存储过程中声明局部游标以循环调用自身
    强制设置双缓冲DoubleBuffered 解决tableLayoutPanel 闪烁
    Using SmartAssembly with MSBuild
  • 原文地址:https://www.cnblogs.com/Bokeyan/p/11364095.html
Copyright © 2020-2023  润新知