我动态创建了三个CheckBox
但我怎么调用
var
  i,ChkBoxTag,ChkBoxTop:integer;
begin   
  ChkBoxTag:=1;
  ChkBoxTag:=10;
  for i:= 1 to 3 do
  begin
    ChkBx := TCheckBox.Create(Application);
    ChkBox.Name       := 'A'+inttostr(I);
    ChkBox.Parent     := Sheet;
    ChkBox.Left       := 56;
    ChkBox.Top        := chkBoxTop;
    ChkBox.Tag        := ChkBoxTag;
    inc(ChkBoxTag);
    ChkBoxTop         := ChkBoxTop+20;
  end;
end;
我怎么判断第一个,或第二个,或第三个控件 的Checked=True?????

解决方案 »

  1.   

    把这些checkbox定义成为全局的或者某个对象的域变量,例如:
    tform1 = class(tform)
    private
      a:array[1..3] of TCheckbox;
    public
      constructor create(aowner:tcomponent);override;
    end;constructor tform1.create(aowner:tcomponent);
    var
      i,ChkBoxTag,ChkBoxTop:integer;
    begin
      inherited;
      ChkBoxTag:=1;
      ChkBoxTag:=10;
      for i:= 1 to 3 do
      begin
        a[i] := TCheckBox.Create(Application);
        a[i].Name       := 'A'+inttostr(I);
        a[i].Parent     := self;
        a[i].Left       := 56*i;
        a[i].Top        := chkBoxTop;
        a[i].Tag        := ChkBoxTag;
        inc(ChkBoxTag);
        ChkBoxTop         := ChkBoxTop+20;
      end;
    end;
      

  2.   

    var
      i,ChkBoxTag,ChkBoxTop:integer;
      ChkList: TList;
    begin   
      ChkBoxTag:=1;
      ChkBoxTag:=10;
      ChkList := TList.Create;
      for i:= 1 to 3 do
      begin
        ChkBx := TCheckBox.Create(Application);
        ChkBox.Name       := 'A'+inttostr(I);
        ChkBox.Parent     := Sheet;
        ChkBox.Left       := 56;
        ChkBox.Top        := chkBoxTop;
        ChkBox.Tag        := ChkBoxTag;
        ChkList.Add(ChkBx);
        inc(ChkBoxTag);
        ChkBoxTop         := ChkBoxTop+20;
      end;
    //我怎么判断第一个,或第二个,或第三个控件 的Checked=True?????
      for I := 0 to ChkList.Count - 1 do
      begin
        if TCheckBox(ChkList.Items[I]).Checked then
          //第I或TCheckBox(ChkList.Items[I]).Tag个是True;
      end;
      ChkList.Free;
    end;
      

  3.   

    呵呵,又是这个问题,再说一下吧,看下面的例子
    定义一个控件数组
    var 
    EditArray:array of TEdit
    begin
      setlength(EditArray,theLengthYouWanted);
      for i:=0 to setlength(EditArray,theLengthYouWanted)-1 do
      begin
         EditArray[i]:=TEdit.create(self);
         with EditArray[i] do
         begin
           // 属性编写
           top:=....
           Parent:=... 
           //事件编写
            OnKeyPress:=...
          end;
      end;
    注意事项,在定义它的top,height,left等属性时要小心设置,最好和i关联,不然会出现所有的edit重叠在一起,只见到一个的现象的edit改成checkbox就行了啊!
      

  4.   

    hjb8000(北极熊)的方法,如果form上只有checkbox,比较可行,但是如果有许多个控件,而且是非checkbox的,不是很合适!