DBGrid显示指定颜色(100)

  • 主题发起人 主题发起人 SP229
  • 开始时间 开始时间
S

SP229

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个表: 编号 字段一 字段二 字段三 字段四 字段五 字段六 ................................................ 65 12 66 14 67 12 68 12 69 12 70 12 71 12 72 14 73 12 74 14 75 12 76 12 77 12 78 12 ........................我其它字段值没有填上去,我想要的结果假如从65开始,这段六的颜色为红色,66就是字段五为红色,67就是字段四为红色68就是字段三为红色,69字段二为红色,70 字段三为红色....我不知道这样描述大家是否看明白const fX: array[0..8] of string=('字段六','字段五','字段四','字段三','字段二','字段三','字段四', '字段五','字段六');我这样做没反应,请哪位大侠看下怎么弄procedure TForm1.dbgrd1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);varj,N,M: integer; S: string;beginfor j :=0 to qry1.RecordCount-1 do begin M:=qry1.FieldValues['编号]-65; N:=M mod 8; if n=0 then n:=8; s:=fX[N]; for i := 2 to 6 do // if dbgrd1.Columns.FieldName=s then if DBGrd1.Columns.Title.Caption=s then begin DBGrd1.Canvas.Font.Color:=clWhite; DBGrd1.Canvas.Brush.Color:=clRed; end else continue; end;end;
 
在DrawCellBack事件中画:procedure TForm1.DrawCellBack(Sender: TObject; Column: TColumn; State: TGridDrawState; var ARect: TRect; Canvas: TCanvas; Row, Col: Integer; DataLink: TGridDataLink);var N,M: integer; S: string;begin M:=DataLink.DataSet.FieldValues['编号]-65; N:=M mod 8; if n=0 then n:=8; s:=fX[N]; if Column.Field.DisplayLabel=s then begin Canvas.Font.Color:=clWhite; Canvas.Brush.Color:=clRed; end;end;
 
to clwlyc D7中TDBGrid好象没有DrawCellBack事件
 
为何没有人答呢,郁闷!
 
OnDrawColumnCell里DBGrid1.Canvas.Brush.Color := clGreen;DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
 
你的代码中并没有调用原来的画动作,所以楼上的为正解
 
多人接受答案了。
 
后退
顶部