[TButton]运行时动态创建和删除按钮

王朝delphi·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

新开一个project,然后拖两个Button放在窗体上

代码如下:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

btnAddButton: TButton;

btnDeleteLast: TButton;

procedure btnAddButtonClick(Sender: TObject);

procedure btnDeleteLastClick(Sender: TObject);

private

{ Private declarations }

procedure CustomButtonClick(Sender: TObject);

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btnAddButtonClick(Sender: TObject);

var

NewButton: TButton; // 新 Button的指针

begin

// 在内存中创建一个 Button,拥有者为self,这样当窗体 destory时,这个新button

// 能够被自动释放

NewButton := TButton.Create(Self);

With NewButton do

begin

Top := 60; // button 的出现的坐标

Width := 60; // button 的宽度

Left := Width * (Self.ControlCount - 2);

Parent := Self; // 指明在那个窗体显示

OnClick := CustomButtonClick; // 指定button click事件

Caption := 'Button' + IntToStr(Self.ControlCount - 2);

end; // with

end;

procedure TForm1.btnDeleteLastClick(Sender: TObject);

begin

// 确定窗体上有新的button

if Self.ControlCount > 2 then

// 删除最后新建的 button

TButton(Controls[ControlCount - 1]).Destroy;

end;

procedure TForm1.CustomButtonClick(Sender: TObject);

begin

// 根据 Sender 来判断哪个新建的button click

ShowMessage(TButton(Sender).Caption + ' Pressed');

end;

end.

作者:lzcx

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航