TPTOP ERP GP 3.0 测试
【DEMO源码下载:GP5.2——单身高亮显示demo.rar】
###################################################################
# 说明:<此版本无显示单元格背景,显示整行背景>
# 1. 本程序展现:显示单元格内字体颜色
# 2. 主要应用了DIALOG.setCellAttributes方法
##################################################################
首先看测试效果:
.per文件:
SCHEMA FORMONLY
LAYOUT
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 --VBOX
END --LAYOUT
ATTRIBUTES
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 ;
END
INSTRUCTIONS
SCREEN 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 RECORD
DEFINE g_table1_attr DYNAMIC ARRAY OF RECORD #属性数组,名称与单身数组一致,类型定义为string
edit1 STRING,
edit2 STRING,
edit3 STRING,
edit4 STRING
END RECORD
DEFINE g_table2 DYNAMIC ARRAY OF RECORD
edit_1 int,
edit_2 STRING
END RECORD
MAIN
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 w1
END MAIN
FUNCTION 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 RECORD
DEFINE g_table1_attr DYNAMIC ARRAY OF RECORD #属性数组,名称与单身数组一致,类型定义为string
edit1 STRING,
edit2 STRING,
edit3 STRING,
edit4 STRING
END RECORD
DEFINE g_table2 DYNAMIC ARRAY OF RECORD
edit_1 int,
edit_2 STRING
END RECORD
MAIN
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 w1
END MAIN
FUNCTION 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
转载请注明:赫非域 » DIALOG.setCellAttributes方法