814123 2019-05-11 13:05 采纳率: 50%
浏览 335
已采纳

delphi 动态创建PANEL,销毁时报错!

panel出现在不同的窗体上。

调用代码:

CreatePnlMess(ProcureForm,380,1,'无需重复!');

FORM1调用,如果PANEL还没有消失的话,Form2在调用PANEL会出现,但是2秒后会报错。

可能是计时器销毁的时候报错了!

创建时的代码

  if Frm.FindComponent(Frm.Name + '_PnlMess') <> nil then begin
    exit;
  end else begin
    pnl := TPanel.Create(Frm);
    with pnl do begin
      Name := Frm.Name + '_PnlMess';
      Parent := Frm;
      Height := 70;
      Width := Wid;
      ParentBackground := False;
      Color := $00F0CAA6;
      Left := (Frm.Width - pnl.Width) div 2;
      Top := (Frm.Height - pnl.Height) div 2;
      BringToFront;
      Caption := '';
    end;
    lbl := TLabel.Create(pnl);
    with lbl do begin
      //Name := Frm.Name + 'LblMess';
      Parent := pnl;
      Caption := Text;
      Left := (pnl.Width - lbl.Canvas.TextWidth(lbl.Caption)) div 2;
      Top := (pnl.Height - Height) div 2;
      AutoSize := True;
      BringToFront;

      Font.Size := 10;
      Font.Style := [fsBold];
    end;

    Ico := TIcon.Create;
    MainForm.ilMess.GetIcon(iL, Ico);

    img := TImage.Create(pnl);
    with img do begin
      //Name := Frm.Name + 'ImgMess';
      Parent := pnl;
      Height := 32;
      Width := 32;
      Left := 25;
      Top := (pnl.Height - Height) div 2;
      BringToFront;
      Picture.Assign(Ico);
    end;

    Trm := TTimer.Create(Frm);
    with Trm do begin
      //Name := Frm.Name + 'TrmMess';
      Interval := 2000;
      OnTimer := MainForm.CurrentTimer;
      Enabled := True;
    end;
  end;

倒计时销毁的代码

  img.Free;
  Ico.Free;
  lbl.Free;
  Trm.Free;
  pnl.Free;
  • 写回答

2条回答 默认 最新

  • threenewbee 2019-05-11 13:46
    关注

    你在哪里销毁的,是不是出现了重复释放,也就是同一个变量已经释放再次释放的情况
    先把所有的free的代码全部注释,然后一条一条添加上去,看到哪里报错。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件