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;
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;
楼上的做法虽然可行,但也有点漏洞,其中的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
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;
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;
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