DIALOG.setCellAttributes方法
TPTOP ERP GP 3.0 测试
【DEMO源码下载:GP5.2——单身高亮显示demo.rar】
###################################################################
# 说明:<此版本无显示单元格背景,显示整行背景>
# 1. 本程序展现:显示单元格内字体颜色
# 2. 主要应用了DIALOG.setCellAttributes方法
##################################################################
首先看测试效果:
.per文件:
SCHEMA FORMONLYLAYOUT VBOX GROUP group02 (TEXT="NEW/w List") TABLE { edit1 edit2 edit3 edit4 [edit1 |edit2 |edit3 |edit4 ] [edit1 |edit2 |edit3 |edit4 ] [edit1 |edit2 |edit3 |edit4 ] [edit1 |edit2 |edit3 |edit4 ] [edit1 |edit2 |edit3 |edit4 ] [edit1 |edit2 |edit3 |edit4 ] [edit1 |edit2 |edit3 |edit4 ] [edit1 |edit2 |edit3 |edit4 ] [edit1 |edit2 |edit3 |edit4 ] [edit1 |edit2 |edit3 |edit4 ] } END --TABLE END --GROUP GROUP group03 (TEXT="W/O List") TABLE { edit_1 edit_2 [edit_1 |edit_2 ] [edit_1 |edit_2 ] [edit_1 |edit_2 ] [edit_1 |edit_2 ] [edit_1 |edit_2 ] [edit_1 |edit_2 ] [edit_1 |edit_2 ] [edit_1 |edit_2 ] [edit_1 |edit_2 ] [edit_1 |edit_2 ] } END --TABLE END --GROUP GRID { ---------- Rows [cn2 ]-[cn3 ] ----------[btn1] [btn2] } END --GRID END --VBOXEND --LAYOUTATTRIBUTES BUTTON btn1 : view, TEXT = 'View'; BUTTON btn2 : head, TEXT = 'head'; edit1 = FORMONLY.edit1,NOENTRY; edit2 = FORMONLY.edit2,NOENTRY; edit3 = FORMONLY.edit3,NOENTRY; edit4 = FORMONLY.edit4,NOENTRY; edit_1 = FORMONLY.edit_1,NOENTRY; edit_2 = FORMONLY.edit_2,NOENTRY; cn2 = FORMONLY.cn2, NOENTRY ; cn3 = FORMONLY.cn3, NOENTRY ;ENDINSTRUCTIONSSCREEN RECORD s_table1[10](edit1,edit2,edit3,edit4)SCREEN RECORD s_table2[10](edit_1,edit_2)END
.4gl文件
# Prog. Version..: '3.10.06-07.03.05(00003)' ## Pattern name...: csfxdemo.4gl# Descriptions...: Set display attributes for cells# Date & Author..: 2012/11/13 BY FMX################################################################ 说明:<此版本无显示单元格背景,显示整行背景># 1. 本程序展现:显示单元格内字体颜色 # 2. 主要应用了DIALOG.setCellAttributes方法##############################################################GLOBALS "../../config/top.global"DEFINE g_table1 DYNAMIC ARRAY OF RECORD #单身数组 edit1 int, edit2 STRING, edit3 STRING, edit4 STRING END RECORDDEFINE g_table1_attr DYNAMIC ARRAY OF RECORD #属性数组,名称与单身数组一致,类型定义为string edit1 STRING, edit2 STRING, edit3 STRING, edit4 STRING END RECORDDEFINE g_table2 DYNAMIC ARRAY OF RECORD edit_1 int, edit_2 STRING END RECORDMAIN DEFINE l_ac INTEGER WHENEVER ERROR CALL cl_err_msg_log LET g_prog="csfxdemo" IF (NOT cl_user()) THEN EXIT PROGRAM END IF IF (NOT cl_setup("CSF")) THEN EXIT PROGRAM END IF OPEN WINDOW w1 WITH FORM "csf/42f/csfxdemo" ATTRIBUTE (STYLE = g_win_style CLIPPED) CALL cl_set_locale_frm_name("csfxdemo") CALL cl_ui_init() CALL b_fill() CLOSE WINDOW w1END MAINFUNCTION b_fill() DEFINE i INTEGER CALL g_table1.clear() CALL g_table2.clear() CALL g_table1_attr.clear() FOR i=1 TO 10 CALL g_table1.appendElement() LET g_table1[i].edit1 = i LET g_table1[i].edit2 = "测试 " || i LET g_table1[i].edit3 = "DEMO " || i LET g_table1[i].edit4 = "TIPTOP ERP GP3.0-- " || i LET g_table2[i].edit_1 = i LET g_table2[i].edit_2 = "TIPTOP ERP GP3.0-- " || i CALL g_table1.appendElement() IF i MOD 2 = 0 THEN LET g_table1_attr[i].edit1 = "red" LET g_table1_attr[i].edit2 = "blue reverse" LET g_table1_attr[i].edit3 = "red" LET g_table1_attr[i].edit4 = "blue reverse" ELSE LET g_table1_attr[i].edit1 = "green" LET g_table1_attr[i].edit2 = "magenta reverse" LET g_table1_attr[i].edit3 = "green" LET g_table1_attr[i].edit4 = "magenta reverse" END IF END FOR DISPLAY ARRAY g_table1 TO s_table1.* BEFORE DISPLAY CALL DIALOG.setCellAttributes(g_table1_attr) END DISPLAY DISPLAY ARRAY g_table2 TO s_table2.*END FUNCTION
上面测试只是GP3.0的效果,
对于GP5.20以上版本有一个DIALOG.setArrayAttributes方法 这个可以设置很多。
看一图:单身语法高亮显示
4gl代码:
GLOBALS "../../config/top.global"DEFINE g_table1 DYNAMIC ARRAY OF RECORD #单身数组 edit1 int, edit2 STRING, edit3 STRING, edit4 STRING END RECORDDEFINE g_table1_attr DYNAMIC ARRAY OF RECORD #属性数组,名称与单身数组一致,类型定义为string edit1 STRING, edit2 STRING, edit3 STRING, edit4 STRING END RECORDDEFINE g_table2 DYNAMIC ARRAY OF RECORD edit_1 int, edit_2 STRING END RECORDMAIN DEFINE l_ac INTEGER WHENEVER ERROR CALL cl_err_msg_log LET g_prog="csfxdemo" IF (NOT cl_user()) THEN EXIT PROGRAM END IF IF (NOT cl_setup("CSF")) THEN EXIT PROGRAM END IF OPEN WINDOW w1 WITH FORM "csf/42f/csfxdemo" ATTRIBUTE (STYLE = g_win_style CLIPPED) CALL cl_set_locale_frm_name("csfxdemo") CALL cl_ui_init() CALL b_fill() DISPLAY ARRAY g_table1 TO s_table1.* BEFORE DISPLAY CALL DIALOG.setCellAttributes(g_table1_attr) END DISPLAY DISPLAY ARRAY g_table2 TO s_table2.* DIALOG ATTRIBUTES(UNBUFFERED=TRUE) DISPLAY ARRAY g_table1 TO s_table1.* BEFORE DISPLAY CALL DIALOG.setArrayAttributes("s_table1",g_table1_attr) #参数:屏幕变量,属性数组 END DISPLAY DISPLAY ARRAY g_table2 TO s_table2.* END DISPLAY ON ACTION CLOSE EXIT DIALOG ON ACTION exit EXIT DIALOG END DIALOG CLOSE WINDOW w1END MAINFUNCTION b_fill() DEFINE l_i INTEGER CALL g_table1.clear() CALL g_table2.clear() CALL g_table1_attr.clear() FOR l_i = 1 TO 20 LET g_table1[l_i].edit1 = l_i LET g_table1[l_i].edit2 = l_i LET g_table1[l_i].edit3 = l_i LET g_table1[l_i].edit4 = l_i LET g_table2[l_i].edit_1 = l_i LET g_table2[l_i].edit_2 = l_i END FOR LET g_table1[2].edit2 = "显示单元格内字体颜色" LET g_table1[3].edit2 = "显示单元格背景" LET g_table1[4].edit2 = "显示整行背景" #假设条件设定 (实际应用可以放在上面循环中处理) #显示单元格内字体颜色 LET g_table1_attr[2].edit1 = "red" #显示单元格背景 LET g_table1_attr[3].edit1 = "red reverse" #显示整行背景 LET g_table1_attr[4].edit1 = "yellow reverse" LET g_table1_attr[4].edit2 = "yellow reverse" LET g_table1_attr[4].edit3 = "yellow reverse" LET g_table1_attr[4].edit4 = "yellow reverse"END FUNCTION