写DBGrid的OnDrawDataCell事件就行了 procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;Field: TField; State: TGridDrawState); begin if gdSelected in State then begin DBGrid1.Canvas.Brush.Color:=clWhite; DBGrid1.DefaultDrawDataCell(Rect,Field,State); end; end;
写DBGrid的OnDrawDataCell事件就行了 procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;Field: TField; State: TGridDrawState); begin if gdSelected in State then begin DBGrid1.Canvas.Brush.Color:=clWhite; DBGrid1.Canvas.Font.Color:=clBlack; DBGrid1.DefaultDrawDataCell(Rect,Field,State); end; end;
可能在OnDrawCell里面可以改 If Query.fieldbyname('字段名').values 满足条件 then Begin Dbgrid.Canvas.Brush.Color := 颜色(如:clInfoBk) ; Dbgrid.DefaultDrawColumnCell( Rect, DataCol, Column, [gdFixed,gdFocused,gdSelected] ); End ;
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if gdselected in state then begin dbgrid1.Canvas.brush.Style:=bsClear;//很重要 dbGrid1.Canvas.Brush.color:=clgreen;//随便改个颜色 dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state); end; end;
defaultdrawing:=flase;procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if gdselected in state then begin dbgrid1.Canvas.brush.Style:=bsClear;//很重要 dbGrid1.Canvas.Brush.color:=clgreen;//随便改个颜色 end; //将此句放在if判断的外面 dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state); end;
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject;
const Rect: TRect;Field: TField; State: TGridDrawState);
begin
if gdSelected in State then
begin
DBGrid1.Canvas.Brush.Color:=clWhite;
DBGrid1.DefaultDrawDataCell(Rect,Field,State);
end;
end;
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject;
const Rect: TRect;Field: TField; State: TGridDrawState);
begin
if gdSelected in State then
begin
DBGrid1.Canvas.Brush.Color:=clWhite;
DBGrid1.Canvas.Font.Color:=clBlack;
DBGrid1.DefaultDrawDataCell(Rect,Field,State);
end;
end;
If Query.fieldbyname('字段名').values 满足条件 then
Begin
Dbgrid.Canvas.Brush.Color := 颜色(如:clInfoBk) ; Dbgrid.DefaultDrawColumnCell( Rect, DataCol, Column, [gdFixed,gdFocused,gdSelected] );
End ;
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if gdselected in state then
begin
dbgrid1.Canvas.brush.Style:=bsClear;//很重要
dbGrid1.Canvas.Brush.color:=clgreen;//随便改个颜色
dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);
end;
end;
defaultdrawing:=flase;
这个我也设置了的,但是要在DBGRID的单元格中点击时才显示出字段具体的数据。
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if gdselected in state then
begin
dbgrid1.Canvas.brush.Style:=bsClear;//很重要
dbGrid1.Canvas.Brush.color:=clgreen;//随便改个颜色
end;
//将此句放在if判断的外面
dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);
end;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
with (Sender as TDBGrid).Canvas do begin
case (DataSource.DataSet as TBDEDataSet).UpdateStatus of
usInserted : Brush.Color := clRed;
usModified : Brush.Color := clBlue;
usDeleted : begin Brush.Color := clBlack; Font.Color := clWhite; end;
end;
DefaultDrawDataCell(Rect, Column.Field, State);
end;
end; DefaultDrawDataCell现在将会用新的font和brush属性来显示文本,很简单吧 :)
它的问题是:
在dbgrid中的多个行,在其中的任一行中的一列点击时,这一列是白色,但其他列是兰色。