一般的COMBOX我们一般的是直接在per里面写item属性,如下代码:
COMBOBOX tc_qcjj08 = FORMONLY.tc_qcjj08,COMMENTS ='Enter 0 1 2 4 8 12 ',
ITEMS=(("0","每批/次"),("1","1H/次"),
("2","2H/次"),("4","4H/次"),
("6","6H/次"),("8","8H/次"),("12","12H/次"),
("24","24H/次"));
一直很想试下动态绑定item值,今天正好写程序用到COMBOX,结果就试了下,
不是很难,主要是4gl代码实现。详细实现如下。
per画面定义一个COMBOX的组件
COMBOBOX tc_qcjj01 = FORMONLY.tc_qcjj01 TYPE VARCHAR,NOT NULL,REQUIRED;
然后在4gl代码中写一个单独的函数来处理COMBOX中的item,代码如下:
##################################################
# Description : 撷取彩妆分群码填充COMBOX
# Date & Author : 2012/09/26 by FMX
##################################################
FUNCTION tc_qcjj01_cmd()
DEFINE li_gbi_count SMALLINT
DEFINE lc_ima06 LIKE ima_file.ima06
DEFINE lc_imz02 LIKE imz_file.imz02
DEFINE lsb_item base.StringBuffer
DEFINE lsb_item2 base.StringBuffer
LET lsb_item = base.StringBuffer.create()
LET lsb_item2 = base.StringBuffer.create()
DECLARE l_cmdCurs2 CURSOR FOR
SELECT DISTINCT ima06,imz02
FROM ima_file,imz_file
WHERE ima06=imz01 AND imz02 LIKE '%彩妆%'
ORDER BY 1
FOREACH l_cmdCurs2 INTO lc_ima06,lc_imz02
CALL lsb_item.append(lc_ima06 CLIPPED || ",")
CALL lsb_item2.append(lc_ima06 CLIPPED || " (" || lc_imz02 CLIPPED || "),")
END FOREACH
CALL cl_set_combo_items("tc_qcjj01",lsb_item.toString(), lsb_item2.toString())
END FUNCTION
cl_set_combo_items()函数是标准的系统共享函数,在这里也把代码贴出来:
此函数写好后,在MAIN函数中直接调用即可。运行效果如下图:
有兴趣的可以试试
转载请注明:赫非域 » 4GL COMBOX动态绑定内容