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

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  

 

你可能感兴趣的:(properties,String,扩展)