Dbgrideh中添加一列checkbox后,选中某一行后,运作一下代码,结果所有的行都被操作,求大神帮忙

Dbgrideh中添加一列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;
------解决方案--------------------
你的代码使用了循环while not ClientDataSet1.Eof do
所以每次单击后所有记录都被操作