此数据列为数据库表中的Boolean类型字段的数据。

解决方案 »

  1.   

    自己画吧,给你一点门路:
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      DBGrid1.DefaultDrawing:=False;
      //或直接设置DBGrid的DefaultDrawing属性为False;
    end;
    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
      if Column.FieldName='CHECKFIELD' then
      begin
        if Column.Field.AsBoolean then
        begin
          DBGrid1.Canvas.FillRect(rect);
          DBGrid1.Canvas.MoveTo (Rect.Left,Rect.Top);
          DBGrid1.Canvas.LineTo (Rect.Left+8,Rect.Top+8);
          DBGrid1.Canvas.LineTo (Rect.Left+20,Rect.Top);
          {OR:
          DBGrid1.Canvas.Draw(Rect.Left+2,Rect.Top+2,TGraphic(ImgCheck));//image of Checked
          }
        end else
        begin
          DBGrid1.Canvas.FillRect(rect);
          {OR:
          DBGrid1.Canvas.Draw(Rect.Left+2,Rect.Top+2,TGraphic(ImgUnCheck)); //image of UnChecked
          }
        end;
      end else
      begin
        DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
      end;
    end;
      

  2.   

    我用的DBGridEh中字段的属性中由checkbox的属性,可考虑用该控件,会节省一些时间
      

  3.   

    To hhytsoft(雨中独行) & ljmanage(过客):
    不知此控件在那里可以下载,或请帮忙发到信箱:[email protected]
    多谢了!!!
      

  4.   

    在dbgrid的fields的属性中有这个应用,自己看一下
      

  5.   

    用DevExpress Grid
    www.51delphi.com有下
      

  6.   

    To  fangzhouyu(海) & joky1981() & XXSingle(黑夜白天人):
    能否说的详细点儿,DBGrid的fields属性为只读的。
    谢谢各位了!!!
      

  7.   

    可以在DBGrid要选择的字段上面自己添加个CCheckBox之类的控件
    具体可以在DBGrid的OnColEnter和OnColExit事件上写代码实现
      

  8.   

    呵呵,我来说得详细点吧!
    在DBGrid的所在Form上加一个TDBCheckBox,比如你要做成复选筐的那一列是:marrige字段,那个你的checkbox的datafield就应该是marriage字段,数据源我就不罗嗦了,checkbox的visible:=false
    此时需要处理DBGrid的一下几个事件:OnDrawColumnCell,代码如下:
    begin
      if (gdFocused in State)and(Column.Field=Table1marrige)then
      begin
        checkbox.SetBounds(Rect.Left+DBGrid1.Left+1,
                           Rect.Top+DBGrid1.Top+1,
                           Rect.right-Rect.Left,
                           Rect.Bottom-Rect.top);
      end;
    end;
    通过OnColEnter事件来显示或隐藏复选筐
    begin
      if DBGrid1.Columns[DBGrid1.SelectedIndex].Field=Table1marrige then
      checkbox.Visible:=True;
      else
      checkbox.Visible:=false;
    end;
    你要是还想:在显示复选筐时,切换复选矿而不是接受用户输入,则处理DBGrid1KeyPress
    begin
      if checkbox.Visible and (Ord(key)>31) then
      begin
        key:=#0;
        Table1.Edit;
        checkbox.checked:=not checkbox.checked;
        checkbox.Field.AsBoolean:=checkbox.Checked;
      end;
    end;
    好了,该结贴了!