抉择DbGrieh的CHeckBox的一行,多行被操作,跪求大神帮忙

选择DbGrieh的CHeckBox的一行,多行被操作,跪求大神帮忙。
procedure TForm1.Button10Click(Sender: TObject);
var
  StrSQL:string;
begin
  ClientDataSet1.Close;
  StrSQL:='select * from Input';
  ClientDataSet1.CommandText:=StrSQL;
  ClientDataSet1.Open;
  ClientDataSet1.First;
  while not ClientDataSet1.Eof do
  begin
      if ClientDataSet1.Fields[9].Value <> Null then
      begin
        ClientDataSet1.Edit;
        ClientDataSet1.Fields[9].AsBoolean := True;
        ClientDataSet1.Post;
      end;
      if ClientDataSet1.Fields[9].AsBoolean then
       begin
       ClientDataSet1.Edit;
       ClientDataSet1.FieldByName('****').AsString:=loginForm.edit2.Text;
       end;
       ClientDataSet1.Post;
       ClientDataSet1.Next;
   end;
   ClientDataSet1.ApplyUpdates (-1);
end;
我用下面的代码实现Fields[9].AsBoolean的初始值为False
procedure TForm1.ClientDataSet1CalcFields(DataSet: TDataSet);
begin
with ClientDataSet1 do
  begin
    if Fields[9].Value = Null then Fields[9].AsBoolean := False;
  end;
end;
使用循环while not ClientDataSet1.Eof do是为了选择所有记录中被标记的记录,现在的问题是只有我标记其中一个,其余的也是默认标记了,然后就执行 if ClientDataSet1.Fields[9].AsBoolean 后的语句了。就是 if ClientDataSet1.Fields[9].Value <> Null then怎么改是程序只操作相应的行。

------解决方案--------------------
if ClientDataSet1.Fields[9].Value <> Null then
      begin
        ClientDataSet1.Edit;
        ClientDataSet1.Fields[9].AsBoolean := True;
        ClientDataSet1.Post;
      end;


你在循环中赋值为true了,当然就选中了啊
------解决方案--------------------
引用:
如果我只想算中某一行的Fields[9].AsBoolean 的值怎么改?


把这段代码去掉

if ClientDataSet1.Fields[9].Value <> Null then
      begin
        ClientDataSet1.Edit;
        ClientDataSet1.Fields[9].AsBoolean := True;
        ClientDataSet1.Post;
      end;