求助::有30个checkbox分成10个组,每组3个.如何实现每组至少有个checkbox是
checked.是不是要用到那个函数啊?怎么分组?好像用Groupbox不行?
可能这个问题有点菜,还请大家帮帮我这菜鸟!!!!谢谢!!!

解决方案 »

  1.   

    把每三个放到一个PANEL面,然后对PANEL.CONTROLS操作!
      

  2.   

    function isChecked: Boolean;
    var
      i: Integer;
    begin
      for i := 0 to GroupBox1.ComponentCount - 1 do
      begin
        if TCheckBox(GroupBox1.Components[i]).Checked then
        begin
          Result := True;
          break;
          exit;
        end;
      end;
      Result := False;
    end;
      

  3.   

    sorry
    我试了一下
    GroupBox1.ComponentCount 取不出来-_-!
      

  4.   

    把每三个放到一个PANEL面,然后对PANEL.CONTROLS操作!
      

  5.   

    TO:ZZH54ZZH谢谢!!!是不是函数搞错了,你再帮我想想.
      

  6.   

    以下测试通过
    在一个GroupBox组里有3个CheckBox:
    至少有一个CheckBox是Checked ^_^
    function isChecked(ParentControl: TWinControl): Boolean;
    var
      i: Integer;
      s: boolean;
    begin
      for i := 0 to ParentControl.ControlCount - 1 do
      begin
        s := TCheckBox(ParentControl.Controls[i]).Checked;
        if s then
        begin
          Result := True;
          exit;
          break;
        end;
      end;
      Result := False;
    end;procedure TForm1.CheckBox1Click(Sender: TObject);
    begin
      if not isChecked(GroupBox1) then
        CheckBox1.Checked := True;
    end;procedure TForm1.CheckBox2Click(Sender: TObject);
    begin
      if not isChecked(GroupBox1) then
        CheckBox2.Checked := True;
    end;procedure TForm1.CheckBox3Click(Sender: TObject);
    begin
      if not isChecked(GroupBox1) then
        CheckBox3.Checked := True;
    end;
      

  7.   

    惨啊....测试通不过啊  出现下面的错误:[Error] Unit1.pas(32): Undeclared identifier: 'ischecked'我找了下没发现有ISCHECKED的函数啊是不是我搞错了还是怎样?大家来看看啊
      

  8.   

    是不是少引用了单元,找找ischecked函数是在哪个单元里
      

  9.   

    function isChecked(ParentControl: TWinControl): Boolean;
    这个函数你加上了吗?
    你不要在上面声明。
    整个单元如下:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        GroupBox1: TGroupBox;
        CheckBox1: TCheckBox;
        CheckBox2: TCheckBox;
        CheckBox3: TCheckBox;
        procedure CheckBox1Click(Sender: TObject);
        procedure CheckBox2Click(Sender: TObject);
        procedure CheckBox3Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}
    function isChecked(ParentControl: TWinControl): Boolean;
    var
      i: Integer;
      s: boolean;
    begin
      for i := 0 to ParentControl.ControlCount - 1 do
      begin
        s := TCheckBox(ParentControl.Controls[i]).Checked;
        if s then
        begin
          Result := True;
          exit;
          break;
        end;
      end;
      Result := False;
    end;procedure TForm1.CheckBox1Click(Sender: TObject);
    begin
      if not isChecked(GroupBox1) then
        CheckBox1.Checked := True;
    end;procedure TForm1.CheckBox2Click(Sender: TObject);
    begin
      if not isChecked(GroupBox1) then
        CheckBox2.Checked := True;
    end;procedure TForm1.CheckBox3Click(Sender: TObject);
    begin
      if not isChecked(GroupBox1) then
        CheckBox3.Checked := True;
    end;end.
      

  10.   

    界面上是一个GroupBox1里面有3个checkbox。把checkBox1,checkbox2,checkbox3对应于相应的单击事件即可。还调试通不过么?