DIALOG.setCellAttributes方法

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


 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值