用  ClientDataSet1-> DataSource1-> DBGridEh 建立的数据库软件,在DBGridEh1的最前面增加一列CheckBox列(实际表中没有此列),CheckBox列的属性设置如下:DataType  := ftBoolean;
FieldKind := fkInternalCalc;程序一开始在CalcFields事件中把此列设为False(CheckBox非选中),代码如下:
procedure TForm1.ClientDataSet1CalcFields(DataSet: TDataSet);
begin
  with ClientDataSet1 do
  begin
    if Fields[0].Value=Null then Fields[0].AsBoolean := False;  //程序一运行就把所有的记录设为非选中状态
  end;
end如果对CheckBox列单行进行打勾、取消打勾,一点问题都没有。可现在如果有“全选”、“全取消”、“反选”三个按钮,如何实现这三个按钮的批量处理功能(不直接用while遍历记录的方法)?特别是反选,很容易就在一条记录上执行两次,又回到最初的状态上。