procedure TForm1.CheckBox13Click(Sender: TObject);
var
  i, nTmp: integer;
  s1: string;
  Item: TListItem;
begin
  if CheckBox13.Checked = true then ListView9.SelectAll
  else
    for i := ListView9.Items.Count - 1 downto 0 do
    begin
      if ListView9.Items[i].Checked = true then
        ListView9.Items[i].Checked := false;
    end;
end;
//我这句哪里不对,就是要实现打钩全选,去钩清除全选 
现在能去除,问题去除后就再不能全选了

解决方案 »

  1.   

    else 后加一句
    if CheckBox13.Checked = false;
      

  2.   

    procedure TForm1.CheckBox13Click(Sender: TObject); 
    var 
      i, nTmp: integer; 
      s1: string; 
      Item: TListItem; 
    begin 
        for i := ListView9.Items.Count - 1 downto 0 do 
        begin 
            ListView9.Items[i].Checked := CheckBox13.Checked; 
        end; 
    end; 
      

  3.   

    procedure TForm1.CheckBox13Click(Sender: TObject);
    var
      i: integer;
    begin
        for i := 0 to ListView9.Items.Count - 1 do
            ListView9.Items[i].Checked := CheckBox13.Checked;
    end;
      

  4.   

    procedure TForm1.CB_TestClick(Sender: TObject);
    var
      i : integer;
    begin
      if cb_test.Checked = true then
        begin
          for i := 0 to lv_test.Items.Count -1 do
          begin
            lv_test.Items[i].Checked :=true;
          end;
        end
      else
      begin
        for i:=0 to lv_test.Items.Count -1 do
        begin
          lv_test.Items[i].Checked := false;
        end;
      end;
    end;
     
    楼上的全部都不对,完全没有考虑到用户可能只勾选某个项目之后。
    以上代码请楼主参考,LV_TEST是ListView控件,CB_test是CheckBox控件。