表内容:
shebeibh shebeimc ...
910100101 AAAAAAA
910100102 AAAAAAB
910100103 AAABBBB
910100201 CCCCCCC
910100301 DDDDDDD
910100302 CDCDCDD
...现在的问题是:要根据shebeibh的前七位是否相同而改变整行的颜色,即
910100101 AAAAAAA
910100102 AAAAAAB
910100103 AAABBBB
这三行是一种颜色
910100201 CCCCCCC
是另一种颜色
910100301 DDDDDDD
910100302 CDCDCDD
又恢复为第一种颜色
显示已经order by shebeibh 了
shebeibh shebeimc ...
910100101 AAAAAAA
910100102 AAAAAAB
910100103 AAABBBB
910100201 CCCCCCC
910100301 DDDDDDD
910100302 CDCDCDD
...现在的问题是:要根据shebeibh的前七位是否相同而改变整行的颜色,即
910100101 AAAAAAA
910100102 AAAAAAB
910100103 AAABBBB
这三行是一种颜色
910100201 CCCCCCC
是另一种颜色
910100301 DDDDDDD
910100302 CDCDCDD
又恢复为第一种颜色
显示已经order by shebeibh 了
解决方案 »
- 我记得 DBGridEh1 这个控件好象能设置序号列,怎么设置啊
- 已知两个日期值,如何得到两者之间的所有日期值
- 系统架框
- 1.如何通过DELPHI代码把IE设置为默认浏览器? 2,WebBrowser.OleObject.document.links.item(i).Click ,单击后IE显示问题?
- 好多的问题,无法理清了,请来帮帮,拉我一把
- 时间控件问题
- 有USB编程的问题————在线等待!!!!!!!!!!!??/
- 请教:忍者的英文怎么拼写?谢谢
- dbgrideh安装时出错
- 关于控件的数组问题?!
- 高分求VBScript到delphi代码的转换(500)
- SetupBuilder 支持BDE安装吗?
AYellowStyle: TcxStyle;
ARedStyle:TcxStyle;
prvrecord:integer=0;//保存上一记录shebeibh的前7位值
chcorlor:integer=0;//变色procedure TForm1.FormCreate(Sender: TObject);
begin
//行颜色
AYellowStyle := TcxStyle.Create(Self);
AYellowStyle.Color := $0080FFFF;
AYellowStyle.TextColor := clMaroon;
//行颜色
ARedStyle := TcxStyle.Create(Self);
ARedStyle.Color := $000000FB;
ARedStyle.TextColor := clMaroon;
end;procedure TForm1.cxGrid1DBBandedTableView1StylesGetContentStyle(
Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);
begin
if strtoint(Copy(ARecord.Values[cxGrid1DBBandedTableView1Lengthcm.Index],1,7))>prvrecord then
begin
chcorlor:=chcorlor+1;
if (chcorlor mod 2)=0 then
AStyle := AYellowStyle
else
AStyle := ARedStyle;
prvrecord:=strtoint(Copy(ARecord.Values[cxGrid1DBBandedTableView1Lengthcm.Index],1,7));
end
else
begin
if (chcorlor mod 2)=0 then
AStyle := AYellowStyle
else
AStyle := ARedStyle;
end;
end;以上是从别人做的CxGrid变色例子稍作修改,没有调试,出错不要见怪
i:integer;
count:integer;
color: array of Tcolor;
第一步。先把不同的shebeibh查找出来。
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('select distinct shebeibh from table');
adoquery1.open;
count:=adoquery1.recordcount;//记录数;
adoquery1.first;
while not adoquery1.eof do
begin
bh[i]:=copy(adoquery1['shebeibh'],1,7); //保存不同的编号的前七位;
adoquery1.next;
end;
第二步在
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);里写代码判断:
var i:integer;
begin
for i:=0 to count do //每一个i值代表一种颜色;
if copy(datasource1.DataSet.FieldByName('shebeibh').Asstring,1,7)=bh[i]
//判断前七位是否相同
then
begin
dbgrid1.Canvas.Brush.Color:=color[i]
dbgrid1.Canvas.Brush.Color:=color[i];
DBGrid1.Canvas.FillRect(Rect);
dbgrid1.Canvas.Font.Color:=Clred;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end
end;
end;