如标题所说,第一步自动建了一个Tpanel控件名称为"mypanel",第二步我把它删除,第三次,又可以新建一个相同名的就如错。如何才能真证把它删除,而新建相同名称时不出错,请帮助。

解决方案 »

  1.   

    //-下面是新建一个控件
      mypanel:=tpanel.Create(self);
      mypanel.Parent:=showpanel;
      mypanel.Align:=altop;
      mypanel.Visible:=true;
      mypanel.Name:='chenpanel'+inttostr(y);
      mypanel.Height:=24;//--下面是删除控件----------------------
      mypanel[y].Destroy;上面的代码就是删除不了控件,再执行新建控件代码时,就出错了。
      

  2.   

    给你一小段程序参考,不知道理解是否正确;
    全局变量:pnl: TPanel;procedure TForm1.btnCreatePanelClick(Sender: TObject);
    begin
      pnl := TPanel.Create(Self);
      with pnl do
      begin
        Parent := self;
        Align := alTop;
        Name := 'myPanel';
      end;
    end;procedure TForm1.btnDeletePanelClick(Sender: TObject);
    begin
      pnl.Free;
    end;
      

  3.   

    //这样不会出现问题
    procedure TForm1.Button1Click(Sender: TObject);
    var
      mypanel: TPanel;
      y: Integer;
    begin
      y := 0;
      mypanel := TPanel.Create(self);
      mypanel.Parent := ShowPanel;
      mypanel.Align := alTop;
      mypanel.Visible := True;
      mypanel.Name := 'chenpanel' + IntToStr(y);
      mypanel.Height := 24;//--下面是删除控件----------------------
      mypanel.Destroy;
    end;mypanel[]什么时候成数组了?
    y变量又是怎么声明和控制的?
    如果你有数组保存Panel的实例那Name属性并不需要赋值
      

  4.   

    为什么不用 Free,不要直接调用 destroy.
      

  5.   

    不好意思,写错了,如下代码所示
    //-下面是新建一个控件
      mypanel:=tpanel.Create(self);
      mypanel.Parent:=showpanel;
      mypanel.Align:=altop;
      mypanel.Visible:=true;
      mypanel.Name:='chenpanel';
      mypanel.Height:=24;//--下面是删除控件----------------------
      mypanel.Destroy;
      

  6.   

    一样,调试不会出问题
    你先得让我能模拟出你说的错误
    如果不方便把代码贴全
    你可以新建一个工程
    把创建和释放Panel的代码移过去
    能重现错误后把整个单元的代码贴出来分析