Panel里面有多个CheckBox控件,如何判断Panel里面有多少个CheckBox打勾了?

解决方案 »

  1. Var
      i, iCount: Integer;
    begin
      iCount := 0;
      for i := 0 to Self.ComponentCount - 1 do
      begin
        if (Self.Component[i] is TCheckBox) and
           (Self.Component[i] as TCheckBox).Checked then
        begin
          Inc(iCount);
        end;
      end;
    end;
      

  2. var i,j: Integer;
    begin
      i := 0;
      for j := 0 to Panel1.ControlCount - 1 do
      begin
        if panel1.Controls[j].ClassType = TCheckBox then
           if TCheckBox(Panel1.Controls[j]).checked then
             inc(i);
      end;
      ShowMessage(IntToStr(i));
    end;
      

  3. 楼上的做法虽然可行,但也有点漏洞,其中的self代表的是什么,Panel,多数是窗体本身,而他却要的是指定的Panel中的,如果窗体有这种类型的控件而不在指定的Panel中,不也都算进去了吗,用如下代码或许可以解决刚才的问题
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i,j: Integer;
    begin
      j := 0 ;  for I := 0 to Panel1.ControlCount - 1 do    // Iterate
      begin
        if Panel1.Controls[i] is TCheckBox then
        begin
          if TCheckBox(Panel1.Controls[i]).Checked then
          begin
            Inc(j);
          end;
        end;
      end;
    其中的Panel1就是要指定的那个Panel
      

  4. 对不起,我说的楼上的是g961681(PerryWang)
      

类似问题 »