begin if Odd(aqStore.RecNo + 1) then {隔行变色} begin dgStore.Canvas.Brush.Color := clCream; dgStore.Canvas.Font.Color := clNavy; end; if aqStore.FieldByName('scount').asinteger > 80 then {附合条件行变色} dgStore.Canvas.brush.Color := clLime; if Column.FieldName = 'onshow' then {附合条件单元格变色} if Column.Field.AsBoolean = true then dgStore.Canvas.brush.Color := $00FFBB95; if State = [gdSelected, gdFocused] then {当前所选单元格变色} begin dgStore.Canvas.Brush.Color := clSkyBlue; dgStore.Canvas.Font.Color := clBlack; end; dgStore.DefaultDrawColumnCell(Rect, DataCol, Column, State); {生效} 这是一些具体实例,好好看看吧
if Odd(aqStore.RecNo + 1) then {隔行变色}
begin
dgStore.Canvas.Brush.Color := clCream;
dgStore.Canvas.Font.Color := clNavy;
end;
if aqStore.FieldByName('scount').asinteger > 80 then {附合条件行变色}
dgStore.Canvas.brush.Color := clLime;
if Column.FieldName = 'onshow' then {附合条件单元格变色}
if Column.Field.AsBoolean = true then
dgStore.Canvas.brush.Color := $00FFBB95;
if State = [gdSelected, gdFocused] then {当前所选单元格变色}
begin
dgStore.Canvas.Brush.Color := clSkyBlue;
dgStore.Canvas.Font.Color := clBlack;
end; dgStore.DefaultDrawColumnCell(Rect, DataCol, Column, State); {生效}
这是一些具体实例,好好看看吧
---- 要改变DBGrid每一行的颜色,只要在ONDrawColumnCell事件中设定要改变颜色的行的条件,并指定DBGrid的Canvas.Brush.color属性并且把Canvas.pen.mode属性设成pmmask,再调用DBGrid的DefaultDrawColumnCell方法即可。注意在改变这两个属性前要先保护好原来的Canvas.Brush.color属性的值,调节器用完成 DefaultDrawColumnCell方法后要把原属性值改回,现以Delphi\demos\db\clientmd 目录下的演示程序clintproj.dpr 为例子,做简单说明,下面是对程序中的栅格MemberGrid的合条件的整行进行变色,变成黑体背景黄色的,其它不合条件的行的颜色为正常字体,白色背景,只在DrawColumnCelL 事件中设条件其它的不变,如下: procedure TClientForm.MemberGridDrawColumnCell(
Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
oldcolor:tcolor;
oldpm:tpenmode;begin
if DM.ProjectTEAM_LEADER.Value =
DM.Emp_ProjEMP_NO.Value then {设定变色的行的条件}
MemberGrid.Canvas.Font.Style := [fsBold];
MemberGrid.DefaultDrawColumnCell
(Rect, DataCol, Column, State);
{上面是演示程序的原内容,以下是增加部分}
if DM.ProjectTEAM_LEADER.Value =
DM.Emp_ProjEMP_NO.Value then {设定变色的行的条件}
begin
oldpm:= MemberGrid.Canvas.pen.mode;
oldcolor:= MemberGrid.Canvas.Brush.color;
MemberGrid.Canvas.Brush.color:=clyellow;
MemberGrid.Canvas.pen.mode:=pmmask;
MemberGrid.DefaultDrawColumnCell
(Rect, DataCol, Column, State);
MemberGrid.Canvas.Brush.color:=oldcolor;
MemberGrid.Canvas.pen.mode:=oldpm;
end;
end;