TIPTOP系统函数cl_show_array()
来源:互联网 发布:python 字符串组合 编辑:程序博客网 时间:2024/05/21 10:53
TIPTOP系统函数cl_show_array()
在TIPTOP系统中设有这样的一个方法cl_show_array(),这个方法的主要作用是开窗呈现一个动态数组中的内容,主要用于我们在对单身里面多条数据进行逐一判断,最终将单身里面有错误的信息,在不写任何开窗代码的情况下,使用这个cl_show_array()将错误信息组合罗列在弹窗里面,外加了一个导出excel的功能.废话不多说直接写段代码测试一下,编写一个名为f4.4gl文件,然后上传编译,在42m目录下面使用命令 fglrun cxm_f4.42m执行,弹出结果.
【注:因为是测试,所以这里面有些系统自带函数注释掉一些,然后添加了两个比较重要的函数FUNCTION cl_set_comp_att_text(ps_fields,ps_att_value)(动态设定栏位标题)和FUNCTION cl_set_comp_visible(ps_fields,pi_visible)(动态隐藏栏位),这两个方法里面做了一些小小的改动】
代码如下:
代码下载地址f4.4gl : http://pan.baidu.com/share/link?shareid=87582&uk=4060653789
--------------------华--------------------丽--------------------分--------------------割--------------------线--------------------
MAIN DEFINE test1,test2 STRING DEFINE r DYNAMIC ARRAY OF RECORD key INTEGER, lastname CHAR(20) END RECORD LET r[1].key = 1 LET r[1].lastname = 'Condor1' LET r[2].key = 2 LET r[2].lastname = 'Condor2' LET r[3].key = 3 LET r[3].lastname = 'Condor3' LET test1 = "|",'Item' CLIPPED LET test1=test1.trim(),"|",'Content' CLIPPED LET test2 = '测试数据!' CLIPPED CALLcl_show_array(base.typeinfo.create(r),test2,test1) // base.typeinfo.create(r)数组内容,test2窗口标题,test1栏位标/ //题(注意栏位标题的格式以”|”将其分开,因为后面的代码里面会以”|”来截取 //)END MAIN FUNCTIONcl_show_array(pnode_array,ps_win_title,ps_title_str) DEFINE pnode_array om.DomNode DEFINE ps_win_title STRING DEFINE ps_title_str STRING DEFINE lnode_record om.DomNode DEFINE llst_fields om.NodeList DEFINE lnode_field om.DomNode DEFINE llst_rec_fields om.NodeList DEFINE li_child_cnt SMALLINT DEFINE li_rec_cnt INTEGER DEFINE lr_array DYNAMIC ARRAY OFRECORD field1 STRING, field2 STRING, field3 STRING, field4 STRING, field5 STRING, field6 STRING, field7 STRING, field8 STRING, field9 STRING, field10 STRING END RECORD DEFINE ls_visible_str STRING DEFINE li_i SMALLINT DEFINE li_j SMALLINT DEFINE ls_i STRING DEFINE lst_title_names base.StringTokenizer DEFINE ls_title STRING DEFINE g_max_rec INTEGER DEFINE lwin_curr ui.Window LETg_max_rec = 10 // 这个g_max_rec在global是有定义的,这里因为只是做简单测试赋值一固定值10 IF pnode_array IS NULL THEN RETURN ELSE LET li_rec_cnt =pnode_array.getChildCount() LETlnode_record = pnode_array.getFirstChild() END IF IF lnode_record IS NULL THEN RETURN ELSE LET llst_rec_fields =lnode_record.selectByTagName("Field") LET li_child_cnt =llst_rec_fields.getLength() END IF FOR li_i = 1 TO li_rec_cnt IF li_i > g_max_rec THEN -- CALL cl_err( '', 9035, 0 ) //系统自带错误提示的方法注释 EXIT FOR END IF IF li_i = 1 THEN LET lnode_record =pnode_array.getFirstChild() ELSE LET lnode_record =lnode_record.getNext() END IF LET llst_fields =lnode_record.selectByTagName("Field") FOR li_j = 1 TO llst_fields.getLength() LET lnode_field =llst_fields.item(li_j) CASE li_j WHEN 1 LET lr_array[li_i].field1 =lnode_field.getAttribute("value") WHEN 2 LET lr_array[li_i].field2 =lnode_field.getAttribute("value") WHEN 3 LET lr_array[li_i].field3 =lnode_field.getAttribute("value") WHEN 4 LET lr_array[li_i].field4 =lnode_field.getAttribute("value") WHEN 5 LET lr_array[li_i].field5 =lnode_field.getAttribute("value") WHEN 6 LET lr_array[li_i].field6 =lnode_field.getAttribute("value") WHEN 7 LET lr_array[li_i].field7 =lnode_field.getAttribute("value") WHEN 8 LET lr_array[li_i].field8 =lnode_field.getAttribute("value") WHEN 9 LET lr_array[li_i].field9 =lnode_field.getAttribute("value") WHEN 10 LET lr_array[li_i].field10 =lnode_field.getAttribute("value") END CASE END FOR END FOR OPEN WINDOW cl_show_array_w AT 1,1 WITH FORM"lib/42f/cl_show_array" ATTRIBUTE(STYLE="frm_list") -- CALL cl_ui_init() //系统自带的方法注释 -- CALL cl_chg_win_title(ps_win_title) //系统自带方法注释,换成下面的两句更改窗口标题 LET lwin_curr = ui.window.getCurrent() CALL lwin_curr.setText(ps_win_title) DISPLAY li_rec_cnt TO FORMONLY.cnt --CALLcl_set_act_visible("accept,cancel",FALSE) //系统自带隐藏按钮代码注释 DISPLAY ARRAY lr_array TO s_array.*ATTRIBUTE(COUNT=g_max_rec,UNBUFFERED) BEFORE DISPLAY FOR li_i = li_child_cnt + 1 TO 10 LET ls_i = li_i LET ls_visible_str =ls_visible_str,"field",ls_i IF li_i != 10 THEN LET ls_visible_str =ls_visible_str,"," END IF END FOR CALLcl_set_comp_visible(ls_visible_str,FALSE) //隐藏掉不需要栏位 LET lst_title_names =base.StringTokenizer.create(ps_title_str,"|") LET li_i = 1 WHILE lst_title_names.hasMoreTokens() LET ls_title =lst_title_names.nextToken() LET ls_title = ls_title.trim() CASE li_i WHEN 1 CALL cl_set_comp_att_text("field1",ls_title) //动态设定栏位标题 WHEN 2 CALLcl_set_comp_att_text("field2",ls_title) WHEN 3 CALLcl_set_comp_att_text("field3",ls_title) WHEN 4 CALLcl_set_comp_att_text("field4",ls_title) WHEN 5 CALLcl_set_comp_att_text("field5",ls_title) WHEN 6 CALLcl_set_comp_att_text("field6",ls_title) WHEN 7 CALLcl_set_comp_att_text("field7",ls_title) WHEN 8 CALLcl_set_comp_att_text("field8",ls_title) WHEN 9 CALLcl_set_comp_att_text("field9",ls_title) WHEN 10 CALLcl_set_comp_att_text("field10",ls_title) END CASE LET li_i = li_i + 1 END WHILE ON ACTION exporttoexcel // 汇出excel的方法注释 #IF cl_chk_act_auth() THEN mark byFUN-650020 --CALLcl_export_to_excel(ui.Interface.getRootNode(),base.TypeInfo.create(lr_array),'','') #END IF ON ACTION exit EXIT DISPLAY #TQC-660079...............begin ON ACTION cancel LET INT_FLAG=0 EXIT DISPLAY #TQC-660079...............end END DISPLAY --CALLcl_set_act_visible("accept,cancel",TRUE) //隐藏按钮方法注释 CLOSE WINDOW cl_show_array_wEND FUNCTIONFUNCTIONcl_set_comp_att_text(ps_fields, ps_att_value) //动态设定栏位标题 DEFINE ps_fields STRING, ps_att_value STRING DEFINE lst_fields base.StringTokenizer, lst_string base.StringTokenizer, ls_field_name STRING, ls_field_value STRING, ls_win_name STRING DEFINE lnode_root om.DomNode, lnode_win om.DomNode, lnode_pre om.DomNode, llst_items om.NodeList, li_i SMALLINT, lnode_item om.DomNode, ls_item_name STRING, lnode_item_child om.DomNode, ls_item_pre_tag STRING, ls_item_tag_name STRING DEFINE g_chg DYNAMIC ARRAYOF RECORD item STRING, value STRING END RECORD DEFINE lwin_curr ui.Window IF (ps_fields IS NULL) THEN RETURN ELSE LET ps_fields = ps_fields.toLowerCase() END IF LET lwin_curr = ui.Window.getCurrent() LET lnode_win = lwin_curr.getNode() LET ls_win_name = lnode_win.getAttribute("name") LET llst_items =lnode_win.selectByPath("//Form//*") LET lst_fields =base.StringTokenizer.create(ps_fields, ",") LET lst_string =base.StringTokenizer.create(ps_att_value,",") WHILE lst_fields.hasMoreTokens() ANDlst_string.hasMoreTokens() LET ls_field_name =lst_fields.nextToken() LET ls_field_value =lst_string.nextToken() LET ls_field_name = ls_field_name.trim() IF ls_field_name.equals(ls_win_name) THEN CALL lnode_win.setAttribute("text",ls_field_value) END IF FOR li_i = 1 TO llst_items.getLength() LET lnode_item = llst_items.item(li_i) LET ls_item_name =lnode_item.getAttribute("colName") IF (ls_item_name IS NULL) THEN LET ls_item_name =lnode_item.getAttribute("name") IF (ls_item_name IS NULL) THEN CONTINUE FOR END IF END IF IF(ls_item_name.equals(ls_field_name)) THEN LET ls_item_tag_name = lnode_item.getTagName() IFls_item_tag_name.equals("TableColumn") OR ls_item_tag_name.equals("Window")OR ls_item_tag_name.equals("Button") THEN #FUN.570234 Add By Lifeng CALLlnode_item.setAttribute("text",ls_field_value.trim()) #FUN-530037 ELSE LET lnode_pre =lnode_item.getPrevious() LET ls_item_pre_tag =lnode_pre.getTagName() IFls_item_pre_tag.equals("Label") THEN CALL lnode_pre.setAttribute("text",ls_field_value.trim())#FUN-530037 END IF END IF EXIT FOR END IF END FOR END WHILEEND FUNCTIONFUNCTIONcl_set_comp_visible(ps_fields, pi_visible) //动态设定栏位标题隐藏 DEFINE ps_fields STRING, pi_visible SMALLINT DEFINE lst_fields base.StringTokenizer, ls_field_name STRING DEFINE lnode_root om.DomNode, llst_items om.NodeList, li_i SMALLINT, lnode_item om.DomNode, lnode_prev om.DomNode, ls_item_name STRING, ls_prev_name STRING, #No:FUN-570225 ls_item_tag STRING, ls_prev_tag STRING DEFINE lwin_curr ui.Window, lfrm_curr ui.Form DEFINE lnode_frm om.DomNode DEFINE ls_formName STRING DEFINE li_idx SMALLINT DEFINE li_gav_cnt SMALLINT DEFINE lc_cust_flag VARCHAR(1) DEFINE ls_gav09 VARCHAR(1) --LIKE gav_file.gav09 DEFINE ls_notNull STRING, ls_required STRING DEFINE ls_gav01 VARCHAR(20), --LIKE gav_file.gav01, ls_gav02 VARCHAR(20) --LIKE gav_file.gav02 -- #FUN-640184-- IF g_bgjob = 'Y'-- AND g_gui_type NOT MATCHES"[13]" THEN #TQC-710024 add-- RETURN-- END IF-- #END FUN-640184 IF (ps_fields IS NULL) THEN RETURN ELSE LET ps_fields = ps_fields.toLowerCase() END IF LET lwin_curr = ui.Window.getCurrent() LET lfrm_curr = lwin_curr.getForm() LET lnode_frm = lfrm_curr.getNode() LET lnode_root = ui.Interface.getRootNode() #No:MOD-750003 --start--# LET llst_items =lnode_root.selectByPath("//Form//*") LET llst_items =lnode_frm.selectByPath("//Form//*") #No:MOD-750003 ---end--- LET lst_fields =base.StringTokenizer.create(ps_fields, ",") # FUN-4B0078 LET ls_formName = lnode_frm.getAttribute("name") LET li_idx =ls_formName.getIndexOf("T", 1) IF li_idx != 0 THEN LET ls_formName =ls_formName.subString(1, li_idx - 1) END IF LET ls_gav01 = ls_formName -- SELECT COUNT(*) INTO li_gav_cnt FROMgav_file -- WHERE gav01 = ls_gav01 AND gav08 = 'Y' IF li_gav_cnt > 0 THEN LET lc_cust_flag = "Y" ELSE LET lc_cust_flag = "N" END IF # --- WHILE lst_fields.hasMoreTokens() LET ls_field_name =lst_fields.nextToken() LET ls_field_name = ls_field_name.trim() LET ls_gav02 = ls_field_name FOR li_i = 1 TO llst_items.getLength() LET lnode_item = llst_items.item(li_i) LET ls_item_name =lnode_item.getAttribute("colName") IF (ls_item_name IS NULL) THEN LET ls_item_name =lnode_item.getAttribute("name") IF (ls_item_name IS NULL) THEN CONTINUE FOR END IF END IF IF(ls_item_name.equals(ls_field_name)) THEN LET ls_item_tag =lnode_item.getTagName() IF(ls_item_tag.equals("Group") OR ls_item_tag.equals("Grid") OR ls_item_tag.equals("Folder") OR ls_item_tag.equals("Page") OR ls_item_tag.equals("Label")OR #FUN-550113 ls_item_tag.equals("Button")) THEN #隐藏GROUP,BUTTON这类的元件 IF (pi_visible) THEN CALLlfrm_curr.setElementHidden(ls_field_name,0) ELSE CALLlfrm_curr.setElementHidden(ls_field_name,1) END IF EXIT FOR END IF IF (pi_visible) THEN CALLlfrm_curr.setFieldHidden(ls_field_name,0) IF (ls_item_tag.equals("FormField"))THEN LET lnode_prev =lnode_item.getPrevious() IF lnode_prev IS NOT NULLTHEN LET ls_prev_tag =lnode_prev.getTagName() LET ls_prev_name =lnode_prev.getAttribute("name") #No:FUN-570225 #No:FUN-570225 --start-- IF ls_prev_tag ="Button" AND lnode_prev.getAttribute("tag") = "+"THEN CALLlnode_prev.setAttribute("hidden",0) LET lnode_prev = lnode_prev.getPrevious() IF lnode_prev IS NOTNULL THEN LET ls_prev_tag =lnode_prev.getTagName() END IF END IF #No:FUN-570225 ---end--- IF(ls_prev_tag.equals("Label")) AND (ls_prev_name NOTMATCHES "dummy*" OR ls_prev_name IS NULL) THEN #No:FUN-570225 CALLlnode_prev.setAttribute("hidden",0) END IF END IF END IF ELSE #FUN-4B0078 #MOD-4C0124 CALLlfrm_curr.setFieldHidden(ls_field_name,1) IF(ls_item_tag.equals("FormField")) THEN LET lnode_prev =lnode_item.getPrevious() IF lnode_prev IS NOT NULLTHEN LET ls_prev_tag =lnode_prev.getTagName() LET ls_prev_name =lnode_prev.getAttribute("name") #No:FUN-570225 #No:FUN-570225 --start-- IF ls_prev_tag ="Button" AND lnode_prev.getAttribute("tag") = "+"THEN CALLlnode_prev.setAttribute("hidden",1) LET lnode_prev =lnode_prev.getPrevious() IF lnode_prev IS NOTNULL THEN LET ls_prev_tag =lnode_prev.getTagName() END IF END IF #No:FUN-570225 ---end--- IF (ls_prev_tag.equals("Label"))AND (ls_prev_name NOTMATCHES "dummy*" OR ls_prev_name IS NULL) THEN #No:FUN-570225 CALLlnode_prev.setAttribute("hidden",1) END IF END IF END IF END IF EXIT FOR END IF END FOR END WHILEEND FUNCTION
--------------------华--------------------丽--------------------分--------------------割--------------------线--------------------
代码最终效果图如下:
- TIPTOP系统函数cl_show_array()
- TIPTOP 系统工具及函数说明
- TIPTOP内置函数
- TIPTOP 内置函数
- tiptop 单据编号函数
- erp---tiptop内置函数
- TIPTOP 库存管理系统--笔记
- tiptop erp 销售系统设定
- tiptop erp 采购系统设定
- tiptop系统常用脚本工具
- Tiptop系统日常监控维护
- tiptop gp 之 split函数
- 【Tiptop ERP M】Tiptop GP ERP ASF生产管理系统
- 【Tiptop ERP M】Tiptop GP ERP APM采购管理系统
- TIPTOP
- TIPTOP系统Oracle 常用命令及权限表
- EXCEL数据导入TIPTOP ERP 系统
- TIPTOP ERP系统成本问题集
- escape()、encodeURI()、encodeURIComponent()区别详解
- EAS导出一个单据的所有的附件
- WebSphere Application Server中的JSF引擎参数(JSF Engine Parameter)
- 论android外接存储设备状态判断
- PHP与MYSQL事务处理
- TIPTOP系统函数cl_show_array()
- 一切看淡,心就不累了-伤感QQ日志
- 固定资产条码应用与ERP集成
- 在Windows XP上编译OpenCV
- 巧用60分钟K线图把握卖点
- 32位,64位整数及其print输出
- 建立web工程
- POJ 3164 最小树形图
- 数组指针的指针操作