小编Jos*_*f J的帖子

当我在自己的OnClick处理程序中销毁一个按钮时,为什么我的程序会崩溃?

我从一个运行http://www.delphi-central.com/runtime.aspx的网站上尝试了一个脚本, 然后成功了.


private
  { Private declarations }
  procedure CustomButtonClick(Sender: TObject);
Run Code Online (Sandbox Code Playgroud)
procedure TForm1.AddNewButtonClick(Sender: TObject);
var
  NewButton : TButton;
begin 
  NewButton := TButton.create(self);

  with NewButton do
  begin
    Top    := 30;
    Width  := 60;
    Left   := Width * (self.ControlCount-2);
    Parent := self;
    OnClick := CustomButtonClick;
    Caption := 'Button '+ inttostr (self.ControlCount-2);
  end;  //With
end;

procedure TForm1.DeleteLastButtonClick(Sender: TObject);
begin
  if Self.ControlCount>2 then
    TButton (Controls[ControlCount-1]).destroy;
end;

procedure TForm1.CustomButtonClick(Sender: TObject); 
begin    
    ShowMessage(TButton(Sender).caption + ' Pressed'); 
end;
Run Code Online (Sandbox Code Playgroud)

但如果我更改OnClick,

OnClick := CustomButtonClick; ==> OnClick := DeleteLastButtonClick; …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-7 delphi-2010

5
推荐指数
2
解决办法
1341
查看次数

标签 统计

delphi ×1

delphi-2010 ×1

delphi-7 ×1