(1)分行不同颜色设置;在DBGridEh1DrawColumnCell中写;
:= clRed;
DataCol, Column, State);
:= clGreen;
DataCol, Column, State);
(2)分行不同背景颜色设置;在DBGridEh1DrawColumnCell中写;
:= clRed;
DataCol, Column, State);
:= clGreen;
DataCol, Column, State);
(3)符合条件的单元格颜色或者背景颜色设置;在DBGridEh1DrawColumnCell中写;
ADOQuery1.FieldByName('价格').AsFloat<0 then
:= clRed;
Rect, Rect.Left, Rect.Top, Column.Field.AsString);
DefaultDrawColumnCell 和
TextRect 的区别:
功能: 重绘画格。
DBGrid属性
DefaultDrawing是用来控制Cell(网格)的绘制。
若DefaultDrawing的缺省设置为True,意思是 Delphi使用DBGrid的缺省绘制方法来制作网格和其中所包含的数据,数据是按与特定列相连接的Tfield构件的DisplayFormat或 EditFormat特性来绘制的;
若将DBGrid的DefaultDrawing特性设置成False,Delphi就不绘制网格或其内容,必须自行 在TDBGrid的OnDrawDataCell事件中提供自己的绘制例程(自画功能)。
画布Canvas,很多构件都有这一属性。
Canvas代表了当前被显示DBGrid的表面,你如果把另行定义的显示内 容和风格指定给DBGrid对象的Canvas,DBGrid对象会把Canvas属性值在屏幕上显示出来。
具体应用时,涉及到Canvas的Brush 属性和FillRect方法及TextOut方法。Brush属性规定了DBGrid.Canvas显示的图像、颜色、风格以及访问Windows GDI 对象句柄,FillRect方法使用当前Brush属性填充矩形区域,方法TextOut输出Canvas的文本内容
(Sender as TDbGrid).DefaultDrawColumnCell(Rect, DataCol, Column, State)
Rect:代表在画布中cell的位置位置所在,也就是你要对哪个区域进行重画;
DataCol:代表columns数组中column的标号
Column:描述cell的显示属性和对应的字段属性的tcolumn对象
State:描述cell是否有输入焦点、是否被选中、是否处于锁定模式(如同column header)
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
i:integer;
begin
i:= DataCol;
if i mod 2<>0 then dbgrid1.canvas.Brush.color:=clblue
else dbgrid1.Canvas.Brush.Color:=clred;
dbgrid1.DefaultDrawcolumnCell(rect,datacol,column,state);
或者dbgrid1.Canvas.TextRect(rect,datacol,column,state);
end;