您的位置:首页 > 其它

【PB】使用 Win32 API 扩展下拉列表框

2007-01-17 02:15 741 查看
获取/设置当前选项

要获取/设置下拉列表框的当前选项,通常是通过如下代码实现的:

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())] 获取当前选项的列名。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: