模型如下:
第一个窗体: 用户可以选择一些 TCheckBox
            选择好后,按“下一步”出现“第二个窗体”第二个窗体: 根据“第一个窗体”中用户选定的TCheckBox的数目,动态创建相同数目的
            TPanel(TPanel的Caption := TCheckBox.Caption)
            用户可以按“上一步”重新回到“第一个窗体中”选择TCheckBox问题:当用户再次进入“第二个窗体时”,会重新创建TPanel,并且和以前创建的重合在一起去了,有什么好办法解决这个问题呢?(希望效率能够最好,即只重新创建新选定的部分和清除取消选定的部分)

解决方案 »

  1.   

    把TPanel 创建的指针放到Tcheckbox得tag属性里
    以后就可以通过 tag 的属性随心所欲创建和清除Tpanel
      

  2.   


    -----------------------------------------------
    把TPanel 创建的指针放到Tcheckbox得tag属性里
    以后就可以通过 tag 的属性随心所欲创建和清除Tpanel
    -----------------------------------------------"创建的指针"?能不能具体一点?  
    我是用for i:= 0 to n do
          begin
            Panel := TPanel.Create;
            Pnael.Left := .....;
            .............
          end;
    来创建TPanel的
      

  3.   

    var MyPanel:array of Tpanel;
        checkcount:Integer;
    在按“下一步”时统计选定的TCheckBox的数目(checkcount),setlength(MyPanel,checkcount)动态创建TPanel
    在按“上一步”时将那些TPanel通通free,再=nil;
      

  4.   

    在按“上一步”时将那些TPanel通通free,再=nil;
      

  5.   

    不要忘了定义panel的位置信息,例如height,width,top,left信息,然后通过tag的数值进行控制数量,还有最好能有一个地方存储这些参数,然后二次进入的时候根据某一个规律进行创建
      

  6.   

    除了统统nil外,还有效率高的方法吗?