procedure TForm3.TreeView1Click(Sender: TObject);  //单击TreeView后的事件
con_bio:=trim(treese.DataSet.Fields[3].asstring);  //con_bio动态得到表名
dbgrid1.Columns[0].Title.caption:='编号';    //DBGRID里是这样动态显示数据
dbgrid1.Columns[1].Title.caption:='输入日期';
...
--------------------------------------------------------------procedure TForm3.CheckBox1Click(Sender: TObject);  //单选框实现全选功能  if ADOTable1.Active then
  begin
    if CheckBox1.Checked then
    begin
        ADOTable1.First;
      for i:=0 to ADOTable1.RecordCount-1 do
      begin
        ADOTable1.Edit;
        ADOTable1.Fields[0].Value:='Y';
        ADOTable1.post;
        ADOTable1.Next;
      end;
    end
  end;---------------------------------------------------------------现在在DBGRID里怎么做一个单选框似的状态列(或者由NO变成YES也行)在点全选框后被勾上,让人一看就知道被全选上了,而且还可以对其中某些数据进行取消选择,有难度,请大家出谋划策吧

解决方案 »

  1.   

    ADOTable1.Fields[0].Value:='Y'; 为什么这样写对第一列的数据没有变化呢?
      

  2.   

    可以用Ehlib组件中的DBGRidEh控件
    或者
    在DBGrid中OnDrawColumnCell事件中画一个,代码如下:
     if Column.Field.DataType=ftBoolean then
      begin
        if Column.Field.AsBoolean then
          dbgGrid.Canvas.Draw(Rect.Left,Rect.Top,imgCheck.Picture.Graphic)
        else
          dbgGrid.Canvas.Draw(Rect.Left,Rect.Top,imgUnCheck.Picture.Graphic);
      end
      else
        dbgGrid.DefaultDrawColumnCell(Rect,DataCol,Column,State);
    其中imgCheck和imgUnCheck是两个TImage控件。