1、将“备选”框的MultiSelect属性设为.T.;
2、在“备选”列表框的Click事件中设置如下:
******************************************
*
TempItem数组临时存放已选项目的内容;
*
*
ItemsSelected用来存放已选项目的数量。 *
******************************************
PUBLIC TempItem(This.ListCount,1), ItemsSelected
ItemsSelected=0
&&初始化
WITH Thisform.已选
.RowSourceType=0
.Clear
ENDWITH
FOR I=1 TO This.ListCount
IF This.Selected(I)
ItemsSelected=ItemsSelected+1
TempItem(ItemsSelected,1)=This.List(I,3)
ENDIF
NEXT
****************************************
*
将临时数组中的数据复制到正式数组中
*
****************************************
IF ItemsSelected=0
RETURN
ELSE
PUBLIC ShowItem(ItemsSelected,1)
FOR I=1 TO ItemsSelected
ShowItem(I,1)=TempItem(I,1)
NEXT
WITH Thisform.已选
.RowSourceType=5
&&将显示框来源数据类型设为数组
.RowSource="ShowItem"
ENDWITH
ENDIF
为什么要弄个临时数组呢?因为预先根本不知道用户会选择多少项目,所以需要定义的数组行数等于备选项目总数,是为了防止用户选择全部项目这一极端情况。通常,用户只会选择其中的几项,造成事先定义的数组含有未用到的元素。若直接显示这个数组,“已选”列表框就会多出许多“.F.”项(数组未赋值前的默认值),影响效果。
图片附件: 游客没有浏览图片的权限,请
登录 或
注册
这是选择多项单列的情况,供楼主研究。