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