PowerBuilder 12.5中如何让DDLB仅显示前两项?
实现下拉列表框(DDLB)仅显示前几项的方法
针对你提到的需要让包含7个选项的DDLB仅显示前2项的需求,在不使用PFC框架的情况下,提供两种实用方案:
方案一:直接删除不需要的选项
在窗口的Open事件或DDLB的Constructor事件中编写PowerScript代码,删除第3项及之后的所有选项:
int li_total, li_i li_total = ddlb_1.TotalItems() // 从最后一项开始倒序删除,避免索引偏移问题 for li_i = li_total down to 3 ddlb_1.DeleteItem(li_i) next
该方案会直接移除多余选项,仅保留前2项供用户选择。
方案二:临时隐藏选项(可恢复)
如果后续需要恢复全部选项,可先将所有选项保存到实例变量数组中,再删除多余项:
- 先在窗口的实例变量中定义字符串数组:
string is_ddlb_items[] - 在窗口
Open事件中执行:
int li_total, li_i li_total = ddlb_1.TotalItems() // 保存所有选项到数组 is_ddlb_items = ddlb_1.Items // 删除第3项及之后的选项 for li_i = li_total down to 3 ddlb_1.DeleteItem(li_i) next
- 需要恢复全部选项时,执行:
ddlb_1.Reset() for li_i = 1 to UpperBound(is_ddlb_items) ddlb_1.AddItem(is_ddlb_items[li_i]) next
补充:用DDDW实现更灵活的控制
如果需要保留所有选项但仅显示前2项(比如后续有条件显示更多),可以用**下拉数据窗口(DDDW)**替代DDLB:
- 创建一个数据窗口,数据源包含全部7个选项,通过过滤条件(如
rownum <= 2)仅返回前2条数据 - 将原DDLB替换为DDDW控件,指定该数据窗口为数据源,设置显示列和数据列
内容的提问来源于stack exchange,提问作者learning
相关产品推荐
相关产品推荐

