获取/设置当前选项
要获取/设置下拉列表框的当前选项,通常是通过如下代码实现的:
ddlb_example.FindItem(ddlb_example.Text, 0)
ddlb_example.SelectItem("First Item", 0)
当存在选项文本重复时,根本无法判断选择/设置了哪项。故需一个函数直接获取/设置当前选项,ComboBox 控件消息 CB_GETCURSEL 和 CB_SETCURSEL,可以实现该功能。
定义 ddlb_extended 的方法 GetCurSel() 和 SetCurSel() 如下:
public function integer getcursel ()
/**//*************************************************************************************
用途:获取当前选项
参数:无
返回值:
如果存在当前选项,则该项的索引值。否则,返回0。
**************************************************************************************/
return Send(handle(this), 327, 0, 0) + 1
end function
public function integer setcursel(integer index)
/**//************************************************************************************
用途:设置当前选项
参数:
index 期望选择的项目。如果为0,则清除当前选项。
返回值:
如果成功,则返回当前选项的索引值。否则,返回0。
*************************************************************************************/
return Send(handle(this), 334, index - 1, 0) + 1
end function实现 Map 功能
在 ComboBox 控件的定义中,CB_GETITEMDATA 和 CB_SETITEMDATA 消息为每个选项关联一个值。
通过选项的索引值,我们可以获取该项的一个关联值,如果该值是一个数组的下标的话,那么就意味着,通过选项索引值 (作为 KEY) 可以获取一个数组成员 (作为 VALUE)。当然,在选项文本不重复的情况下,选项文本亦可为 KEY。
定义 ddlb_extended 的方法 GetItemData() 和 SetItemData() 如下:
public function long getitemdata (integer index)
/**//*******************************************************************************
用途:获取指定项的关联值
参数:
index 指定项的索引值
返回值:
如果成功,返回关联值;否则,返回 -1。
********************************************************************************/
return Send(handle(this), 336, index - 1, 0)
end function
public function boolean setitemdata (integer index, long data)
/**//*******************************************************************************
用途:设置指定项的关联值
参数:
index 指定项的索引值
data 关联值
返回值:
如果成功,返回 true;否则,返回 false。
********************************************************************************/
return Send(handle(this), 337, index - 1, data) <> -1
end function举例
派生类 ddlb_columns 的选项文本为数据表的列描述,且有实例变量 String dbColumns[] 用于保存列名,我们可以通过表达式 dbColumns[GetItemData(GetCurSel())] 获取当前选项的列名。
本文介绍如何使用自定义方法来高效地获取和设置ComboBox控件的当前选项及其关联数据,包括实现GetCurSel和SetCurSel方法以解决选项文本重复的问题,并利用GetItemData和SetItemData方法为每个选项绑定额外的数据。
2997

被折叠的 条评论
为什么被折叠?



