比如,我通过一个查询选出了10条记录,但仍然有几条不符合要求,只要在符合条件的记录前画勾,就可以打印出所要的结果。
这个复选框可以说是临时的,它并不包含在数据库里。也就是说并不是再加一个字段,让它以CheckBox的形式显示。
谢谢!!

解决方案 »

  1.   

    那在select 的时候定义一个列,select t.*,'Y' flag from table t
      

  2.   

    看有没 checkboxes 属性有了选择 true就行了。
      

  3.   

    可以换个控件,用TDBGridEh,建个计算字段。
      

  4.   

    办法有二:
    1、使用现成控件,如TDBGridEh。 
    2、建议一个字段(字符型),选择了输入一个字符。再设置被选择的行为红色。
      

  5.   

    先在数据集中增加一个计算字段,再在DBGrid单元格中绑定一个checkBox控件,点击控件选中与否改变计算字段的值即可
      

  6.   

    TQUERY可以设置虚拟字段
    TADOQUERY好像是实体字段
      

  7.   

    并不太完美的答案-不支持xp样式
    如果谁能让它支持了,那我认为就完美了。
    其实添加一个DBCheckBox也挺好,需要时调出来让它盖住画的ChedkBox就行了。遗憾的是不能调整其大小,不能调到和画的那个一样大(当然,肯定有高手能做到)。
    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    const
      CtrlState: array[Boolean] of Integer = (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED);
    begin
      if Column.Field.DataType = ftboolean then
      begin
        DBGrid1.Canvas.FillRect(Rect);
        DrawFrameControl(DBGrid1.Canvas.Handle,Rect, DFC_BUTTON, CtrlState    [Column.Field.asboolean]);
      end;
    end;procedure TForm1.DBGrid1CellClick(Column: TColumn);
    begin
      if DBGrid1.SelectedField.DataType=ftboolean then
      begin
        DBGrid1.SelectedField.DataSet.Edit;
        DBGrid1.SelectedField.AsBoolean:=not DBGrid1.SelectedField.AsBoolean;
        DBGrid1.SelectedField.DataSet.Post;
        DBGrid1.Options:=DBGrid1.Options-[dgEditing];
      end
      else
        if DBGrid1.SelectedField.DataType<>ftboolean then
          DBGrid1.Options:=DBGrid1.Options+[dgEditing];
    end;
    我有点疑问,想让DBGrid1.Options.dgEditing的属性变化,到底应该怎么写?
      

  8.   

    这个复选框可以说是临时的,它并不包含在数据库里。也就是说并不是再加一个字段,让它以CheckBox的形式显示。
    (忘了说了):这个想法很好,但实际是不可能实现的(其实没有不可能的事,只是水平高低的问题)。最好的方法还是在数据库里添加一个CheckBox字段。试想,你在DBGrid外边加上20个CheckBox,而数据有几千条,你怎么和数据一一对应呢?
      

  9.   

    用cxGrid,里面设置字段有个property,把他设置成CheckBox
      

  10.   

    为什么非要自已添加checkbox,因为我对第三方软件有恐惧症,为安装第三方软件常常需要安装好几次才能成功,往往把我的系统搞乱套。
    看来没有再好的答案了,结帖给分。