我要在界面上动态生成chcekbox  
checkbox的caption属性是由接受来的数据确定的
数据是一条条发过来的
每次不确定有多少条 也就不确定生成多少checkbox
每次刷新的时候前面的checkbox就要free掉
重新根据接受的数据来生成新的
位置也要自动排列 
这个问题该怎么做 
在线等

解决方案 »

  1.   

    定义一个足够你使用的chcekbox 数组
    然后根据你数据生成多少个chcekbox。循环的排序
    用完之后在循环释放掉。
      

  2.   

    为什么非要用checkbox呢,可以改用listview,chicklistbox呀,listview的item可以加checkbox,还可以保存data,可以存任意的数据
      

  3.   

    刚好做了一个创建动态控件的演示程序,把动态创建的例子给你参考:具体创建多少个用数组来装载
    //初始化label数组
      if Length(LabelArry)>0 then
      begin
        for i:=0 to Length(LabelArry)-1 do
        begin
          FreeAndNil(LabelArry[i]);
        end;
      end;
      setlength(LabelArry,SimKGZT[0]);
      for i:=0 to SimKGZT[0]-1 do
      begin
        LabelArry[i]:=TLabel.Create(self);
      end;
      for i:=0 to SimKGZT[0]-1 do
      begin
        LabelArry[i].Parent:=self;
        LabelArry[i].Left:=SimKJZB[i][0];
        LabelArry[i].Top:=SimKJZB[i][1];
        LabelArry[i].Width:=30;
        LabelArry[i].Height:=73;
        LabelArry[i].AutoSize:=False;
        LabelArry[i].Name:='lb'+inttostr(i+1);
        LabelArry[i].Caption:='';
        LabelArry[i].Transparent:=True;
        LabelArry[i].Cursor:=crHandPoint;
        LabelArry[i].Color:=clBlack;
        LabelArry[i].Tag:=1;
        LabelArry[i].Hint:='开/关';
        LabelArry[i].ShowHint:=True;
        LabelArry[i].Visible:=True;
        LabelArry[i].OnClick:=btnClick;
      end;
      

  4.   

    你可以把checkbox放在一个panel上面 然后遍历上面的checkbox控件  如果存在 则free 
    然后 再按你的要求创建 
     
      

  5.   

    如果非得用CheckBox的话,建议用控件数组(即4楼的方法)