回 帖 发 新 帖 刷新版面

主题:谁能帮忙看下这个错误是怎么回事

简介:
窗体上有一个panel,有一个button(btn1)。
点击btn1后,在panel中生成10个image,10个speedbutton
speedbutton点击后消失(free掉的),露出底下的image。

问题:
speedbutton点击后,总有一个会报错,而且不同机器上报错的位置不同。
我自己机器上是左起第六个报错,同事机器有的是第六个有的是第五个
另外,本来窗体上有2个edit(没用到的),删除这2个edit后,再测试我的机器上变成第九个报错了。。。



代码如下,最好是直接下载附件看unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    pnlArea: TPanel;
    btn1: TButton;
    procedure btn1Click(Sender: TObject);
    procedure btnallclick(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
var
  buttonArea:TSpeedButton;
  ImgArea:TImage;
  i:integer;
begin
  for i:=1 to 10 do
  begin

    ImgArea:=TImage.create(Form1);
    ImgArea.Parent:=pnlArea;
    ImgArea.Top:=0;
    ImgArea.Left:=23*i;
    ImgArea.Name:='Img'+inttostr(i+1);
    TImage(ImgArea).Picture.LoadFromFile('.\source\1.bmp');
    buttonArea:=TSpeedbutton.create(Form1);
    buttonArea.Parent:=pnlArea;
    buttonArea.Top:=0;
    buttonArea.Left:=23*i;
    buttonArea.Name:='btn'+inttostr(i+1);
    buttonArea.OnClick:=btnallclick;
  end;

end;

procedure TForm1.btnallclick(Sender: TObject);
begin
     // TSpeedButton(sender).Glyph.LoadFromFile('.\source\1.bmp');
     TSpeedButton(Sender).Free;
end;

end.

回复列表 (共12个回复)

11 楼

说的貌似有那么点道理
我这么做创建界面的时候耗时太久

12 楼

学习!

我来回复

您尚未登录,请登录后再回复。点此登录或注册