PB列表控件.docx

上传人:b****5 文档编号:8195699 上传时间:2023-01-29 格式:DOCX 页数:27 大小:35.20KB
下载 相关 举报
PB列表控件.docx_第1页
第1页 / 共27页
PB列表控件.docx_第2页
第2页 / 共27页
PB列表控件.docx_第3页
第3页 / 共27页
PB列表控件.docx_第4页
第4页 / 共27页
PB列表控件.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

PB列表控件.docx

《PB列表控件.docx》由会员分享,可在线阅读,更多相关《PB列表控件.docx(27页珍藏版)》请在冰豆网上搜索。

PB列表控件.docx

PB列表控件

////////////////////////////////////

ListView

它和树是2个不同的控件,项的属性也不同,只是相似而已。

可见,在ListView中大多用索引号来代替了TreeView中的句柄。

在列表控件中,显示的是llvi_cust.PictureIndex=1//项目的图片,但是在状态栏中显示的大图片、小图片、状态图片

而这个llvi_cust.PictureIndex=1表示的是索引为1的大图片、小图片。

因为列表的表示方式可以改变的。

【其他】

■控件显示样式

ListView控件可以用下面的四种形式显示信息。

大图标方式:

每个项目都显示为大图标,图标下面的标签显示一定的文字信息。

用户可以在该控件内拖动图标。

小图标方式:

项目显示为小图标,并且每个项目的右边都有一个标签。

用户也可以在视图内拖动选中的图标。

列表方式:

项目显示为小图标,每个图标右边都有一个标签,并且按照一定的顺序以列优先方式显示,显示样式和上面的相同。

报表方式:

项目以多栏列表显示,左边的栏显示图标和标签,用户可以根据自己的需要指定任意数量的附加栏并可以设定每个栏内显示的相应数据。

■典型编程

如何使用数据动态构建ListView控件、在不同的显示样式之间切换以及对选中对象进行处理,这是该控件最常用的三种编程情况。

下面分别加以介绍。

该控件中显示的数据可以是静态的,在开发时就可以确定;也可以是动态的,需要根据用户的数据改变该控件的显示内容,这种情况更具有普遍性。

如何根据用户的数据初始化该控件,这是该控件的一个非常典型的编程。

编程思路和开发环境中的设定过程是相似的,也需要首先设定要添加项目的label,data以及要使用图标的索引号。

下面是一段典型的编程:

ListViewItemllvi_cust

Intli_numrows,li_index

DataStorelds_curst

SetPointer(HourGlass!

Lds_cust=Createdatasotre

This.DeleteItems()//首先清除ListView中其他的项目

//为报表显示样式创建多个列

This.AddColumn("公司",Left!

700)

This.AddColumn("联系地址",Left!

500)

This.AddColumn("电话",Left!

400)

//检索数据

lds_cust.dataobject="d_customer"

lds_cust.SetTransObject(SQLCA)

li_numrows=lds_cust.Retrieve()

//如果没有检索到数据则直接返回

Ifli_numrows<=0Then

Destroylds_cust//释放DataStore对象的内存空间        

Return  //返回

EndIf

Forli_index=1toli_numrows  //如果检索到了数据,对数据逐条处理

llvi_cust.label=lds_cust.Opany_name[li_index]+"~t"+&

    lds_cust.Object.address[li_index]+"~t"+&

    lds_cust.Object.phone[li_index]//项目标签

llvi_cust.data=lds_cust.Object.id[li_index]//项目的数据

llvi_cust.PictureIndex=1//项目的图片

This.AddItem(llvi_cust)  //添加该项目

Next

Destroylds_cust//释放DataStore对象的内存空间

上面的脚本使用DataStore来提取数据,如果检索到数据,就将每条数据添加到ListView控件中,如果没有检索到数据就直接退出。

添加项目到ListView时,首先为ListViewItem类型的变量赋值,包括label,data和pictureindex三项,赋值完毕后将该变量的值添加到ListView中。

如何在不同的显示样式之间进行切换?

ListView控件的属性View是一个枚举类型的属性,通过修改该属性使其取不同的值可以改变该控件的显示样式。

可以使用的取值有:

ListViewSmallIcon!

  表示以小图标样式显示。

ListViewLargeIcon!

   表示以大图标样式显示。

ListViewList!

  表示以列表样式显示。

ListViewReport!

  表示以报表样式显示。

比如,可以设置多个命令按钮,不同的按钮被点击时都改变ListView的显示样式。

在其中的“报表显示样式”按钮上可以编写如下脚本:

lv_1.View=ListViewReport!

当然,还可以在一个菜单的各个菜单项中编写脚本,当在ListView控件上使用鼠标右键时弹出该菜单。

具体方式取决于开发人员的编程风格和用户的具体要求。

      如何提取选中项目的内容?

实际上显示样式只是一个表面问题,而提取选中项目的内容才是最终的目的。

应该首先判断哪个项目选中,然后再读取选中项目的数据。

判断项目是否选中可以通过SelectedIndex函数、ListViewItem类型对象的Selected属性等来实现。

读取指定项目的数据可以通过ListViewItem类型对象的Label和Data属性来获取。

下面是一个最复杂的典型编程,该程序从一个允许同时选中多个项目的ListView控件中读取所有选中项目的标号和数据,脚本如下:

Intli_index

ListViewItemllv_item

Forli_index=lv_1.SelectedIndex()Tolv_1.TotalItems()

lv_1.GetItem(li_index,llv_item)

Ifllv_item.SelectedThen

  MessageBox("提示",String(li_index)+"是选中的~r~n标号:

"+&

   llv_item.label+"数据:

"+String(llv_item.data))

EndIf

Next

上面的脚本首先定义一个ListViewItem类型的变量,使用GetItem将ListView的项目读取到该变量中,通过判断该变量的Selected来得知项目是否选中。

函数SelectedIndex来获取第一个被选中的项目的索引号,循环直到处理完最后一个项目。

在其他很多资料上都介绍的使用State函数循环处理多选ListView中的项目,实际上是行不通的。

另外,如果在ListView控件的相关事件中编程,可以直接使用事件的相关参数来获取选中的项目。

比如,在DoubleClicked事件中编写脚本,读取用户双击项目的数据,并根据该数据做一定的处理,这也是一种比较常用的典型编程方法。

下面是该事件中一段典型的脚本:

ListViewItemllv_item

This.GetItem(index,name)

SetPointer(HourGlass!

Dw_1.Retrieve(llv_item.Label)

上面的脚本在用户双击选中ListView中的项目时读取该项目的标签,并以该标签作为参数检索其他的数据窗口。

【属性】

ListView属性

▲Visible

布尔类型的变量,表示ListView是否可见。

该属性缺省为True。

▲Enabled

布尔类型变量,表示ListView是否可用。

该属性缺省为True。

▲FixedLocations

布尔类型变量,表示用户是否可以拖动控件中的项目来改变其位置。

该属性缺省为False。

▲EditLabels

布尔类型变量,表示用户是否可以在控件中编辑项目的标签。

该属性缺省为False。

▲AutoArrange

布尔类型,表示是否自动排列图标。

该属性的缺省值为False。

▲ExtendedSelect

布尔类型,表示用户是否可以选择多个项目。

该属性的缺省值为False,是一个非常重要的属性。

▲ButtonHeader

布尔类型,当为True时报表视图中的标题显示为按钮而不是标签,该属性的缺省值为True。

▲DeleteItems

允许用户使用Delete键删除列表中的项目。

该属性缺省为False。

▲HideSelection

如果该属性为True,当控件失去焦点时,选中的项目不显示选中状态;如果该属性为False,当控件失去焦点时选中项目仍然显示为选中状态。

该属性的缺省值为True。

▲LabelWrap

该属性设置项目的文字是否换行显示还是只在一行显示。

该属性的缺省值为True,表示换行显示。

▲Scrolling

该属性表示控件是否可以该动显示其中的项目。

缺省为True。

▲ShowHeader

表示标题是否显示在报表视图中。

该属性缺省为True。

▲CheckBoxes

表示状态图片是否可以被CheckBox替代。

如果设置该属性为True,则CheckBox缺省为非选中状态。

该属性缺省为False。

▲TrackSelect

该属性可以指定当鼠标在项目上移动时是否以不同的颜色表示。

当该属性设置为True时,鼠标在项目上停留则以不同的颜色表示,当停留一定时间后自动选中该项目。

▲OneClickActivate

表示鼠标单击是否激活ItemActivate事件。

当该属性取值为True时,单击鼠标触发ItemActivate事件,并且鼠标位于某项目上时导致项目的颜色改变(效果和TrackSelect相同)并且鼠标的形状为手型。

▲TwoClickActivate

表示鼠标双击是否触发ItemActivate事件。

▲GridLines

指定报表样式时是否显示网格线。

该属性缺省为False。

▲HeaderDragDrop

该属性指定在报表样式中列头是否可以拖动来改变列的顺序。

该属性缺省为False。

▲FullRowSelect

该属性指定在报表样式中是否选中整行的数据。

该属性的缺省值为False。

▲UnderlineCode

当0neClickActive属性为True时,该属性有效。

该属性指定没有选中的项目是否显示下划线,为True时表示显示。

▲UnderLineHot

不管0neClickActive还是TwoClickActivate属性为True,该属性都有效。

该属性取值为True,表示HotTracking有效,并且高亮显示的项目带有下划线。

该属性的缺省值为False。

▲Border

该属性指明ListView控件是否有边框,缺省值为True。

▲BorderStyle

枚举类型的属性,可以设定ListView控件的边框类型。

当Border属性取值为True时该属性有效。

缺省为StyleLower!

该属性的可用值有StyleBox!

,StyleLowered!

,StyleRaised!

和StyleShadowBox!

▲SortType

枚举类型的属性,缺省值为Unsorted!

,表示不进行排序。

可以使用的值还有Ascending!

(升序),Descending(降序),UserDefined!

(用户定义)和Unsorted!

(不排序)。

▲View

枚举类型的属性,表示该控件中的项目初始化时的显示样式,缺省值为ListViewLargeIcon!

,为大图标显示。

可以使用的值有ListViewLargeIcon!

(大图标显示样式),ListViewSmallIcon!

(小图标显示样式),ListViewList!

(列表显示样式)和ListViewReport(报表显示祥式)。

▲Accelerator

为该控件定义快捷键。

快捷键允许用户使用键盘选中某个项目,而不是使用鼠标。

快捷健在项目标签的第一个字母下面显示下划线表示。

ListViewItem属性

ListView控件的结构比较复杂,使用该数据结构有助于简化对该控件的操作。

该数据结构只有少数的函数,大部分时候使用该控件的属性来操作,或者是给该类型的数据赋值后将其插入到ListView控件中。

ListView控件最重要的数据结构ListViewItem,该结构用来保存ListView控件中每个项目的信息。

它具有以下属性:

▲CutHighLighted

布尔类型属性,当该属性为True时项目高亮显示,并且是进行剪切操作的目标。

▲Data

any类型的属性,是和项目相关联的数据值。

▲DropHighLighted

布尔类型属性,该属性取值为True表示项目高亮显示,并且是拖放的目标。

▲HasFocus

布尔类型属性,该属性为True时表示项目在当前具有焦点。

▲ItemX

Integer类型的属性,该属性的取值是项目在ListView控件中的X坐标。

▲ItemY

Integer类型的属性,该属性的取值是项目在ListView控件中的Y坐标。

▲Label

String类型的属性,该属性的取值是项目文本标签中的内容。

▲OverlayPictureIndex

Integer类型的属性,其取值是覆盖图像列表中图片的索引号。

▲PictureIndex

Integer类型的属性,它的取值是项目图标的控件图像列表内的索引号。

▲Selected

布尔类型的属性,该属性取值为True时表示该项目是选中的。

该属性是一个比较重要的属性,经常用来判断项目是否选中。

▲StatePictureIndex

Integer类型的属性,该属性的取值是控件状态图像列表中的索引号。

【事件】

◆BeginDrag

index

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

◆BeginLabelEdit

index

当用户单击选中的标签时或者调用相应的函数开始编辑标签时触发

◆BeginRightDrag

index

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

◆Clicked

index

当用户在控件上点击鼠标左键时触发该事件。

当双击鼠标左键时也触发该事件

◆ColumnClick

column

当以报表样式显示并且ButtonHeader属性设置为True时该事件才有可能触发。

当用户点击栏目标题时触发

◆Constructor

没有参数

控件创建时触发该事件。

通常是在包含该控件的窗口触发窗口的Open事件之前触发该事件

◆DeleteAllItems

没有参数

当所有的项目删除时触发该事件

◆DeleteItem

index

当某一个项目被删除时触发该事件

◆Destructor

没有参数

当控件撤消时触发。

通常是在窗口的Close事件触发之后紧跟着触发

◆DoubleClicked        

index

当用户双击控件时触发该事件

◆DragDrop

source、index

当用户拖动一个对象到控件上并松开鼠标放下该对象时触发

◆DragEnter

source

当用户拖动其他对象到该控件中时触发

◆DragLeave

source

当用户拖动对象并离开该控件时触发

◆DragWithin

source、index

当用户在控件中拖动对象时触发

◆EndLabelEdit

index、newlabel

当用户编辑完标签时触发

◆GetFocus     

没有参数

当控件获得焦点时触发

◆Help  

Xpos、Ypos

当控件获得当前焦点并且用户点击了F1键或者用其他方式要获取控件的帮助时触发

◆InsertItem

index

当在控件中插入新的项目时触发

◆ItemActivate

index

当单击或者双击项目时触发。

触发时机还取决于控件OneClickActivate和TwoClickActivate属性的设置

◆ItemChanged

index,focuschanged,hasfocus,  selectionchange,selected,otherchange

当控件中的项目改变时触发

◆ItemChanging

没有参数

当项目中的某些内容正处于变化过程中时触发。

在该事件中可以返回1来防止改变

◆Key

key,keyflag

当用户点击了一个按钮时触发该事件

◆LoseFocus

没有参数

当控件失去焦点时触发

◆Other

wparam,iparam

当有其他系统信息而没有相应的PB映射消息时触发

◆RightClicked

index

当点击鼠标右键时触发该事件

◆RightDoubleClicked

index

当双击鼠标右键时触发该事件

◆Sort

index1,index2,column

当控件中的项目正在进行排序时触发

【函数】

★AddItem

该函数有两种语法格式,listviewname.AddItem(label,pictureindex),函数的功能是在listviewname中添加一个项目,项目的标签内容为label的内容,项目的图片索引号为pictureindex。

另一个语法为:

listviewname.AddItem(item),作用是将ListViewItem类型的项目添加到listviewname中,ListViewItem类型的变量item可以详细设置其属性的取值,使用这种格式的函数可以更详细地设置要添加项目的内容。

★AddLargePicture

该函数的作用是向ListView控件的大图标显示样式中添加位图、图标或者光标,该函数的语法为dlistviewname.AddLargePicture(picturename)。

★AddSmallPicture

该函数的作用是向ListView中添加小图标显示样式时的图标、光标或位图,该函数的语法为listviewname.AddSmallPicture(picturename)。

★AddStatePicture

该函数的作用是向ListView中添加状态图标时的图标、光标或位图。

该函数的语法是:

controlname.AddStatePicture(picturename)。

★Arrange

该函数的作用是在显示样式为大图标或者小图标时按行排列图标,函数的语法是listviewname.Arrange()。

★DeleteColumn

函数的语法是listviewname.DeleteColumn(index),作用是删除索引号为index的列。

★DeleteColumns

该函数的语法是listviewname.DeleteColumns(),作用是删除控件中的所有列,相当于对所有列都使用DeleteColumn函数。

★DeleteItem

函数语法是listviewname.DeleteItem(index),作用是删除索引号为index的项目。

★DeleteItems

函数的语法是listviewname.DeleteItems(),可以删除ListView控件中的所有项目。

★DeleteLargePicture

删除索引号为index的大图标,函数的语法是:

listviewname.DeleteLargePicture(index)。

★DeleteLargePictures

删除所有的大图标。

★DeleteSmallPicture

函数语法是listviewname.DeleteSmallPicture(index),删除索引号为index的小图标。

★DeleteSmallPictures

函数的语法是listviewname.DeleteSmallPictures(),可以删除控件中的所有小图标。

★DeleteStatePicture

函数的语法是controlname.DeleteStatePicture(index),可以删除index指定索引号的状态图标。

★DeleteStatePictures

可以删除控件中所有的状态图标。

★EditLabel

函数语法为listviewname.EditLabel(index),作用是将索引号为index的项目的标签置为编辑状态。

★FindItem

函数语法为listviewname.FindItem(startindex,label,partial,wrap),函数的作用是在listviewname指定的控件中,从startindex索引号开始查找内容为label的项目,如果找到就返回找到项目的索引号,查找时发生错误则返回-1。

可以通过partial与wrap两个参数指定查找选项,partial参数为True时可以进行部分匹配查找,wrap参数为True时搜索完毕后返回到第一个项目。

另外,该函数还可以有另外一种格式:

listboxname.FindItem(text,index),该函数的功能是在索引号为index之前搜索标签内容为text的项目,如果要在所有项目中搜索,可以将index指定为0。

★GetColumn

语法是listviewname.GetColumn(index,label,alignment,width),功能是获取标号为index的项目的属性,并将标签内容保存在变量label中,将标签文字内容的对齐属性保存在变量alignment中,将列的宽度保存在变量width中。

★GetItem

该函数的语法是listviewname.GetItem(index,{column},item),作用是检索索引号为index的项目的属性,并将这些属性保存到ListViewItem类型的变量view中。

参数column为可选项,指定该参数时可以让该函数只明确检索哪列的属性,如果不指定该参数则检索第一列的属性。

★GetOrigin

函数的语法是listviewname.GetOrigin(x,y),可以获取ListView控件左上角的坐标,并将坐标值保存在x和y中。

参数x和y都是Integer类型变量。

★InsertColumn

该函数的语法是listviewname.InsertColumn(index,label,alignment,width),作用是在index指定的列号之前插入一个新列,新列的标签文本为label变量的内容,它的对齐方式由枚举型变量alignment变量指定,可以使用的值为Center!

,Justify!

,Left!

或者Right!

;宽度由width变量指定,其单位为PowerBuilderUnit。

注意,在第一个项目之前不能插入项目。

★InsertItem

在ListView控件中插入项目,该函数有两种语法格式。

当只插入标签、并且指定图片时可以使用listviewname.InsertItem(index,label,pictureindex)格式,该函数的作用是在控件中索引号为index的项目之前插入一个项目,新插入的项目的标签内容为label变量的取值,图片的索引号为pictureindex变量的取值。

该函

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 法学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1