【PB】指定某行某列的颜色属性值uf_setcell_color

来源:互联网 发布:淘宝客手机网站搭建 编辑:程序博客网 时间:2024/05/22 12:58
01./*-----------------------------------------------------------------------------------  02.函数功能:指定某行某列的属性值(字体、背景颜色等)  03.  04.    参数:  05.            dw                  数据窗口名  06.            args_properties     (text: 改变字体颜色;  background: 背景色)   07.            args_type           类型(value:指通过值确定行;  row:指通过行号直接确定)  08.            args_col[]          列名或者列号  09.            args_info[]         行号及对应颜色数组  10.              11.              12.           13.  返回值:无  14.  15.  注: 1. 由于二维数组无法动态声明, 因此用一维数组代替, 通过程序处理。  16.         因此要求传入到info数组的数据必须是以下格式:  17.        18.         {'行号1','颜色','行号2','颜色'}  19.        20.      2. 目前针对字段中未设表达式的情况。  21.        22.        23.      2004-05-14  24.      1. 实现修改字段中已经设置表达式的情况。  25.        26.----------------------------------------------------------------------------------*/  27.  28.//如果未传入值,则返回  29.IF UpperBound(args_col) <= 0 THEN   30.    RETURN  31.END IF  32.  33.Integer i, j  34.String ls_colname, ls_properties, ls_old_value  35.String ls_head, ls_mid, ls_tail, ls_condition  36.String ls_value, ls_color  37.//----------2004-05-14  38.String ls_sign  39.Boolean lb_sign  40.//------------------------  41.  42.  43.FOR i = 1 TO UpperBound( args_col )  44.    //取列号  45.    IF IsNumber( args_col[i] ) THEN  46.        ls_colname = "#" + String( args_col[i] )  47.    ELSE  48.        ls_colname = args_col[i]  49.    END IF  50.      51.    //修改的属性(这里大家可以自己扩展属性)  52.    CHOOSE CASE args_properties  53.        CASE "text"  54.            ls_properties = "color"  55.              56.        CASE "background"  57.            dw.modify( ls_colname + ".background.mode = '0' " )  58.            ls_properties = "background.color"  59.              60.    END CHOOSE  61.      62.    //去改列的表达式  63.    ls_old_value = dw.Describe( ls_colname + "." + ls_properties )  64.      65.    //=========================================================2004-05-14修改  66.    //取出的值中若含有("),就说明有表达式,或者初始值,  67.    //而在重建表达式时,有这两个"在是不行的,所以要去除。  68.    IF Pos(ls_old_value, '"') <> 0 THEN  69.        ls_old_value = Right(ls_old_value, Len(ls_old_value) - Pos(ls_old_value, "~t"))  70.        ls_old_value = Left( ls_old_value, Len(ls_old_value) - Pos(ls_old_value, "~t") - 1 )  //去掉最后的引号  71.    END IF  72.    //=====================================================================  73.      74.    //根据什么确定行  75.    CHOOSE CASE args_type  76.        CASE "value"  77.            ls_head = "'0~tcase(" + ls_colname +" "  78.              79.        CASE "row"  80.            ls_head = "'0~tcase(getrow() "  81.    END CHOOSE  82.      83.      84.    FOR j = 1 TO UpperBound( args_info ) STEP 2  85.        ls_value = args_info[j]     //行号或者改单元格的值  86.        ls_color = args_info[j+1]   //取颜色  87.          88.        ls_mid = ls_mid + " when " + ls_value + " then " + ls_color  89.    NEXT  90.      91.    ls_tail = " else " + ls_old_value + ")'"    //结尾  92.      93.    //组合成表达式中的条件  94.    ls_condition = ls_colname + "." + ls_properties + "="  95.    ls_condition = ls_condition + ls_head + ls_mid + ls_tail  96.//  messagebox("abc",ls_condition)  97.    //执行  98.    dw.Modify( ls_condition )  99.      100.NEXT  

 

原创粉丝点击