首先将DBgrid的DefaultDrawing属性设置为false;
然后在DBBrid的DrawColumnCell事件中这样做:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Column.Field.AsInteger < 75 then begin
DBGrid1.Canvas.Font.Color := clWhite;
DBGrid1.Canvas.Brush.Color := clRed; //这里设置单元格填充色
DBGrid1.Canvas.FillRect(Rect); //这里对相应的单元格进行北景色填充
end;
//输出内容
DBGrid1.Canvas.TextRect( Rect, Rect.Left, Rect.Top, Column.Field.AsString);
end;这个例子中是设置DBGrid的单元格颜色的,你的问题原理也一样,就是当条件合适的时候在cell中画上哪个图标,然后在把文字显示
然后在DBBrid的DrawColumnCell事件中这样做:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Column.Field.AsInteger < 75 then begin
DBGrid1.Canvas.Font.Color := clWhite;
DBGrid1.Canvas.Brush.Color := clRed; //这里设置单元格填充色
DBGrid1.Canvas.FillRect(Rect); //这里对相应的单元格进行北景色填充
end;
//输出内容
DBGrid1.Canvas.TextRect( Rect, Rect.Left, Rect.Top, Column.Field.AsString);
end;这个例子中是设置DBGrid的单元格颜色的,你的问题原理也一样,就是当条件合适的时候在cell中画上哪个图标,然后在把文字显示
Email: [email protected]
Email: [email protected]
var
bmp:Tbitmap;
outrect:Trect;
bmpwidth:integer;
begin
outrect:=rect;
if column.field='tablecommon_name' then //要加入图形的列名
begin
bmp:=tbitmap.creat;
try
bmp.assign(tablegraphic);//要加入的图形
bmpwidth:=(rect.bottom-rect.top)*2;
outrect.right:=rect.left+bmpwidth;
dbgrid1.canvas.stretchdraw(outrect,bmp);
finally
bmp.free;
end;
outrect:=rect;
outrect.left:=outrect.left+bmpwidth;
end;
dbgrid1.defaultdrawdatacell(outrect,column.field,state);//如果没有其他要输出到同一列的数据的话,可以不加这条语句。