ListView
【其他】
■控件显示样式
ListView控件可以用下面的四种形式显示信息。
大图标方式:每个项目都显示为大图标,图标下面的标签显示一定的文字信息。用户可以在该控件内拖动图标。
小图标方式:项目显示为小图标,并且每个项目的右边都有一个标签。用户也可以在视图内拖动选中的图标。
列表方式:项目显示为小图标,每个图标右边都有一个标签,并且按照一定的顺序以列优先方式显示,显示样式和上面的相同。
报表方式:项目以多栏列表显示,左边的栏显示图标和标签,用户可以根据自己的需要指定任意数量的附加栏并可以设定每个栏内显示的相应数据。
■典型编程
如何使用数据动态构建ListView控件、在不同的显示样式之间切换以及对选中对象进行处理,这是该控件最常用的三种编程情况。下面分别加以介绍。
该控件中显示的数据可以是静态的,在开发时就可以确定;也可以是动态的,需要根据用户的数据改变该控件的显示内容,这种情况更具有普遍性。如何根据用户的数据初始化该控件,这是该控件的一个非常典型的编程。编程思路和开发环境中的设定过程是相似的,也需要首先设定要添加项目的label,data以及要使用图标的索引号。下面是一段典型的编程:
ListViewItem llvi_cust
Int li_numrows,li_index
DataStore lds_curst
SetPointer(HourGlass!)
Lds_cust = Create datasotre
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()
//如果没有检索到数据则直接返回
If li_numrows <= 0 Then
Destroy lds_cust //释放DataStore对象的内存空间
Return //返回
End If
For li_index = 1 to li_numrows //如果检索到了数据,对数据逐条处理
llvi_cust.label = lds_cust.Object.company_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
Destroy lds_cust //释放DataStore对象的内存空间
上面的脚本使用DataStore来提取数据,如果检索到数据,就将每条数据添加到ListView控件中,如果没有检索到数据就直接退出。添加项目到ListView时,首先为ListViewItem类型的变量赋值,包括label,data和pictureindex三项,赋值完毕后将该变量的值添加到ListView中。
如何在不同的显示样式之间进行切换?ListView控件的属性View是一个枚举类型的属性,通过修改该属性使其取不同的值可以改变该控件的显示样式。可以使用的取值有:
ListViewSmallIcon! 表示以小图标样式显示。
ListViewLargeIcon! 表示以大图标样式显示。
ListViewList! 表示以列表样式显示。
ListViewReport! 表示以报表样式显示。
比如,可以设置多个命令按钮,不同的按钮被点击时都改变ListView的显示样式。在其中的“报表显示样式”按钮上可以编写如下脚本:
lv_1.View=ListViewReport!
当然,还可以在一个菜单的各个菜单项中编写脚本&#x