TOPGP5.3:combobox动态下拉

一、前言

开发和维护TOPGP多年,一直觉得这个系统中的下拉框直接固定写死在4fd画面档中,是个非常恶心的设计,这个过程中也一直有浮现过想要自己写一个动态下拉框动态配置档的想法,但是一直拖着,终于在前段时间写了。
以下就按部就班,将开发过程写出来,其实非常简单的一个东西,早在几年前就应该做了。

二、建立数据表

/*
================================================================================
檔案代號:tc_dic_file
檔案名稱:下拉列表数据字典
檔案目的:
上游檔案:
下游檔案:
檔案類型:B
多語系檔案:N
============.========================.==========================================
*/
create table tc_dic_file
(
tc_dic001   varchar2(10) NOT NULL,   /*所属程序代号                           */
tc_dic002   varchar2(10) NOT NULL,   /*字段代号                               */
tc_dic003   number(5) NOT NULL,      /*序号                                   */
tc_dic004   varchar2(10),            /*Value                                  */
tc_dic005   varchar2(255),           /*Item                                   */
tc_dicacti  varchar2(1)              /*资料有效码                             */
);

alter table tc_dic_file add  constraint tpc_dic_pk primary key  (tc_dic001,tc_dic002,tc_dic003) enable validate;
grant select on tc_dic_file to tiptopgp;
grant update on tc_dic_file to tiptopgp;
grant delete on tc_dic_file to tiptopgp;
grant insert on tc_dic_file to tiptopgp;
grant index on tc_dic_file to public;
grant select on tc_dic_file to ods;

三、建立画面档4fd

注:整合在文章尾部资源下载链接中

四、建立程序代码4gl

注:整合在文章尾部资源下载链接中

五、共用初始化函数4gl

1、代码片段
# Prog. Version..: '5.30.15-14.10.14(00000)'     #
#
# Program name...: cl_set_combo_items_gae.4gl
# Descriptions...: 動態設定ComboBox的Item.
# Date & Author..: 17/07/24 by zhengzr

DATABASE ds       

GLOBALS "../../config/top.global"

FUNCTION cl_set_combo_items_plus(ps_field_name,p_tc_dic001,p_tc_dic002)
   DEFINE ps_field_name    STRING
   DEFINE p_tc_dic001      LIKE tc_dic_file.tc_dic001
   DEFINE p_tc_dic002      LIKE tc_dic_file.tc_dic002 
   DEFINE l_sql            STRING 
   DEFINE ps_values        LIKE ze_file.ze03
   DEFINE ps_items         LIKE ze_file.ze03

   WHENEVER ERROR CALL cl_err_msg_log

   LET l_sql = 
      "SELECT to_char(wm_concat(tc_dic004)),to_char(wm_concat(tc_dic004||':'||tc_dic005)) ",
      "  FROM tc_dic_file ",
      " WHERE tc_dic001='",p_tc_dic001,"' ", 
      "   AND tc_dic002 = '",p_tc_dic002,"' ", 
      " ORDER BY tc_dic003 "  
   PREPARE pre_001 FROM l_sql 
   EXECUTE pre_001 INTO ps_values,ps_items

   CALL cl_set_combo_items(ps_field_name, ps_values, ps_items)
END FUNCTION
2、函数说明

cl_set_combo_items_plus(ps_field_name,p_tc_dic001,p_tc_dic002)
参数说明:
ps_field_name:当前画面上需要设置动态下拉的“字段代号”
p_tc_dic001:cooi800中设置的“所属程序代号”
p_tc_dic002:cooi800中设置的“字段代号”

六、使用演示

1、设置动态下拉项目

这里写图片描述

2、在4GL代码中增加初始化代码

这里写图片描述

3、效果展示

这里写图片描述

七、下载链接

1、动态下拉框数据表建立schema
2、动态下拉框配置档4gl逻辑代码
3、动态下拉框配置档4fd画面代码
4、动态下拉框公用初始化函数4gl代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值