>>38
それは多分Checked := FalseしたときにさらにOnClickイベントが発生してしまうから。
多重にイベントが発生しないようにすればいいよ。

var updating: Boolean;

procedure TForm1.ChckBoxOnClick(Sender: TObject);
begin
 if updating then Exit;
 updating := True;
 try
  ... // メインの処理
 finally
  updating := False;
 end;
end;