【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())] 获取当前选项的列名。
要获取/设置下拉列表框的当前选项,通常是通过如下代码实现的:
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())] 获取当前选项的列名。
相关文章推荐
- pb7下使用几个Win32 API 的例子
- 【PB】使用参数指定的SQL语句向指定的下拉列表框中添加数据
- Win32 API编程:使用CreateProcess创建新进程
- Windows音频编程:Win32 Wave API 的使用
- Android使用下拉列表框实例
- 01使用Win32 API创建、销毁线程——控制进度条
- 使用PB调用API自动更新(非FTP模式)(七、下载代码)
- 微信小程序学习用demo:仿猫眼电影;使用猫眼api,下拉加载
- 简单使用COMBO(下拉列表框)控件
- 在DataGrid中使用下拉列表框和设置焦点
- vba使用win32 API(GetOpenFileName )实现打开文件对话框
- vba使用win32 API(GetOpenFileName )实现打开文件对话框
- 【转】 在 .NET 框架程序中通过DllImport使用 Win32 API
- .NET Compact Framework 下Win32 API P/Invoke 的使用
- 在 .NET 框架程序中通过DllImport使用 Win32 API
- 译:如何使用win32 api中的edit控件
- 使用PInvoke.NET插件为托管代码添加Win32 API签名
- 使用Win32 加密API 来进行加密操作
- 5-5使用下拉列表框,节省空间
- .NET Compact Framework 下Win32 API P/Invoke 的使用