读书人

GIRD中颜色设置解决方法

发布时间: 2012-12-31 11:57:51 作者: rapoo

GIRD中颜色设置
有一个表如下,想根据字段A的值变化,用颜色区别。即字段A的值是01、04、06的记录,是一种颜色,字段A的值是03、05的记录,是另一种颜色。请告诉我该怎样做。谢谢!

A B C D
01 zhang 56 789
01 cheng 25 123
01 qing 45 555
03 chen 65 555
03 guan 54 323
04 qiu 45 555
05 cheng 34 333
05 song 43 445
06 li 55 555
...
[解决办法]
grid 控件可以按条件设置每行的前景或背景色

例如设置不同背景色,grid.init 中加几行:
This.SetAll('DynamicBackcolor', ;
[iif(inlist(A,'01','03','05'), rgb(255,0,0), ;
iif(inlist(A,'02','04','06'), rgb(0,0,255), rgb(255,255,255)))], ;
'Column')

[解决办法]

MYFORM = NEWOBJECT("C_FORM")
MYFORM.SHOW
READ EVENTS
RETURN
DEFINE CLASS C_FORM AS FORM
AUTOCENTER=.T.
CAPTION="表格中颜色显示示例"
ADD OBJECT GRID1 AS GRID WITH TOP=((THISFORM.HEIGHT-THISFORM.GRID1.HEIGHT)/2)+20,LEFT=(THISFORM.WIDTH-THISFORM.GRID1.WIDTH)/2

PROCEDURE GRID1.INIT
CREATE CURSOR TABNAME (A1 C(2),A2 C(6),A3 N(4),A4 N(4))
INSERT INTO TABNAME VALUES ("01","zhang",56,789)
INSERT INTO TABNAME VALUES ("01","cheng",25,123)
INSERT INTO TABNAME VALUES ("01","qing",45,555)
INSERT INTO TABNAME VALUES ("03","chen",65,555)
INSERT INTO TABNAME VALUES ("03","guan",54,323)
INSERT INTO TABNAME VALUES ("04","qiu",45,555)
INSERT INTO TABNAME VALUES ("05","cheng",34,333)
INSERT INTO TABNAME VALUES ("05","song",43,445)
INSERT INTO TABNAME VALUES ("06","li",55,555)
GO TOP
WITH THIS
.FONTSIZE=10
.HEADERHEIGHT=28
.RECORDSOURCETYPE = 1
.RECORDSOURCE = "TABNAME"
.ROWHEIGHT=24
FOR I = 1 TO .COLUMNCOUNT
WITH .COLUMNS(I).HEADER1
.ALIGNMENT=2
ENDWITH
ENDFOR
ENDWITH
*---背景色
THIS.SETALL('DynamicBackColor',"iif(inlist(A1,'03','05'),rgb(255,0,0),iif(inlist(A1,'01','04','06'),rgb(0,0,255),rgb(255,255,255)))",'Column')


*---前景色
THIS.SETALL('DynamicForeColor',"iif(inlist(A1,'03','05'),rgb(0,255,0),iif(inlist(A1,'01','04','06'),rgb(255,0,255),rgb(255,255,255)))",'Column')
ENDPROC
PROCEDURE DESTROY
CLEAR EVENTS
ENDPROC
ENDDEFINE


[解决办法]
SELECT *,CAST(A1 AS N(2)) AS AA FROM TABNAME INTO CURSOR TABNAMEA
[解决办法]
引用:
规律就是字段A的值变动一次,颜色也跟着变动一次,如同奇偶行用两种颜色区分。
如果用SQL生成一个新表,在原表的基础上增加一个字段AA,该字段从表头起,当字段A变化时,AA自动加1,字段A不变时,AA也不变,最后,用楼上的方式,可以实现目的。
只是这样一来,如何用SQL语句来实现AA自动加1,我不会,还需请教各位。


让查询sql语句中增加一个伪字段,此字段值从1,2,3一直自动增长到表的记录数,
oracle里面只要在里面加rownum即可,如select rownum, ... from ...
但vfp中没有这个功能无法直接实现, 建议先生成一个表里面包含字段A 和序号
A id_no
01 1
03 2
04 3
05 4
然后主表关联这个表在使用
THIS.SETALL('DynamicBackColor',"iif((mod(id_no/2))=0),rgb(255,0,0),rgb(255,255,255)))",'Column')
方式来改变颜色


读书人网 >VFP

热点推荐