你可以使用dbgrid.canvas.stretchdraw(rect,bitmap) 选三幅图片,用下面的方法在表格中画图 Tform1.dbgrid1drawcolumncell(sender:tobject;const rect:trect;datecol:integer;column:tcolumn;state:tgriddrawstate); var x,y :integer; begin dbgrid1.canvas.stretchdraw(rect,picture3)//首先将此字段清除在空白 if comparestr(column.fieldname,'你要画图的字段')=0 then begin x:=(rect.right-rect.left-picture1.width)div/2 y:=(rect.bottom-rect.top-picture1.width)div/2 //如果字段值为true, if (column.field.displaytext='true') then dbgird1.canvas.draw(rect.left+x,rect.top+y,picture1) else dbgird1.canvas.draw(rect.left+x,rect.top+y,picture2) end; end; 上面只是显示的部分,若想直接修改应编写dbgrid的双击事件 tform1.dbgrid1dblclick(sender:tobject) begin dbgrid1.datasource.dataset.edit; //将数据取反 if comparestr(dbgrid1.selectedfield.displaytext,'true')=0 then dbgrid1.selectfield.asstring:='false' else dbgrid1.selectfield.asstring:='true' dbgrid1.datasource.dataset.post; end;
改变背景颜色: procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var Defalt_Color:TColor; begin Defalt_Color := DBGrid1.Canvas.Brush.Color; if ADOQuery1.FieldByName('fparentid').AsInteger=0 then begin DBGrid1.Canvas.Brush.Color:=clRed; DBGrid1.DefaultDrawColumnCell(rect,datacol,Column,state); end; DBGrid1.Canvas.Brush.Color:=Defalt_Color; end;
选三幅图片,用下面的方法在表格中画图
Tform1.dbgrid1drawcolumncell(sender:tobject;const rect:trect;datecol:integer;column:tcolumn;state:tgriddrawstate);
var x,y :integer;
begin
dbgrid1.canvas.stretchdraw(rect,picture3)//首先将此字段清除在空白
if comparestr(column.fieldname,'你要画图的字段')=0 then
begin
x:=(rect.right-rect.left-picture1.width)div/2
y:=(rect.bottom-rect.top-picture1.width)div/2
//如果字段值为true,
if (column.field.displaytext='true') then
dbgird1.canvas.draw(rect.left+x,rect.top+y,picture1)
else
dbgird1.canvas.draw(rect.left+x,rect.top+y,picture2)
end;
end;
上面只是显示的部分,若想直接修改应编写dbgrid的双击事件
tform1.dbgrid1dblclick(sender:tobject)
begin
dbgrid1.datasource.dataset.edit;
//将数据取反
if comparestr(dbgrid1.selectedfield.displaytext,'true')=0 then
dbgrid1.selectfield.asstring:='false'
else
dbgrid1.selectfield.asstring:='true'
dbgrid1.datasource.dataset.post;
end;
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
Defalt_Color:TColor;
begin
Defalt_Color := DBGrid1.Canvas.Brush.Color;
if ADOQuery1.FieldByName('fparentid').AsInteger=0 then
begin
DBGrid1.Canvas.Brush.Color:=clRed;
DBGrid1.DefaultDrawColumnCell(rect,datacol,Column,state);
end;
DBGrid1.Canvas.Brush.Color:=Defalt_Color;
end;