dbgrideh是有这个功能,不过我一般不用它的。
因为它要求你的对应的字段是Boolean型的
我的做法:
画checkbox上去,效果比它的还好,想怎么画就怎么画,还支持一列上有多个checkbox呢,下面就是了:(P_HJ是一个panel,上面有4个checkbox)
Type
TMyGrid=class(TDBGrid);
////
procedure TFrmWh.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
with TMyGrid(Sender) do begin
if DataLink.ActiveRecord = Row - 1 then begin
Canvas.Font.Color:=clWhite;
Canvas.Brush.Color:=$00800040;
if LowerCase(Column.FieldName)='explain' then//这里判断是画你需要checkbox的列
begin
//设置显示位置和背景和字体颜色,达到以假乱真的效果
P_HJ.SetBounds(Rect.Left+DBGridEh1.Left+2,Rect.Top+DBGridEh1.Top+2,Rect.Right-Rect.Left,Rect.Bottom-Rect.Top);
P_HJ.Color:=Canvas.Brush.Color;
P_HJ.Font.Color:=clWhite;
P_HJ.Visible:=True;
end;
end
else Canvas.Brush.Color:=$00F0FFFF;
end;
end;