`

Delphi动态创建、删除按钮

阅读更多

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.

分享到:
评论

相关推荐

    Delphi 5编程实例与技巧

    4.4.1 动态创建菜单 106 4.4.2 为菜单动态定义快捷键 108 4.4.3 动态改变菜单 108 4.4.4 定制系统菜单 109 4.4.5 制作图形菜单项 110 4.4.6 在状态栏中添加进度条等其他 组件 111 4.4.7 MDI应用程序中的菜单融合 113...

    DELPHI 5编程实例与技巧

    4.4.1 动态创建菜单 106 4.4.2 为菜单动态定义快捷键 108 4.4.3 动态改变菜单 108 4.4.4 定制系统菜单 109 4.4.5 制作图形菜单项 110 4.4.6 在状态栏中添加进度条等其他 组件 111 4.4.7 MDI应用程序中的菜单融合 113...

    Delphi开发范例宝典目录

    实例050 动态创建窗体和释放窗体 59 实例051 修改提示字体及颜色 60 1.14 其他技术 61 实例052 窗口融合技术 61 实例053 给MDI窗体加背景 62 实例054 如何关闭MDI类型窗体中的子窗体 63 实例055 向提示...

    Delphi 6集成开发环境

    3.3 按钮类组件................................................ 80 3.3.1 TButton 组件..................................81 3.3.2 TBitBtn 组件..................................81 3.3.3 TSpeedButton 组件....

    delphi 开发经验技巧宝典源码

    0052 使用数组为TlistView组件动态创建字段 33 0053 解决程序的死锁问题 34 0054 怎样实现接口委托 34 0055 在Delphi中使用汇编 35 0056 为程序设置版本和帮助信息 36 0057 动态链接库的创建与调用 36 ...

    delphi 开发经验技巧宝典源码06

    0052 使用数组为TlistView组件动态创建字段 33 0053 解决程序的死锁问题 34 0054 怎样实现接口委托 34 0055 在Delphi中使用汇编 35 0056 为程序设置版本和帮助信息 36 0057 动态链接库的创建与调用 36 ...

    Delphi 7应用编程150例

    第8章通过20个实例介绍了一些典型组件的使用技巧,主要内容包括类似IE的工具栏、与Word无缝连接、制作语法检查器,制作电子表格、动态创建按钮、自动滚动的工具栏等。通过本章的学习,可以了解到Delphi 7中组件...

    Mlskinv2.3界面源码

    11、修正TMlSkinPageControl动态创建后,在Free时Sheet时会报错的问题 12、修正MlSKinNCButton 默认设置为DOWN=TRUE的时候,运行后需要鼠标移动到按钮上面触发一下,才会显示为DOWN的状态问题 13、修正...

    《十万个为什么-计算机应用技巧大全》

    12、在 IE 的工具栏和 Tools 菜单中动态添加/删除按钮和菜单项技术; 13、注册机编程方法; 14、Dll 动态链接库的存取; 15、全局热键的定义:无论焦点在哪个控件上,只要在同一线程内,都可以激活该热键。 应用...

    vc++ 应用源码包_1

    利用Delphi的代码在VC中显示JPG图片,不使用动态连接库。 Mail_Report.zip 一个邮件报告程序。 SrcFirstProg.zip 解释了最基本的MFC程序流程。 tabcontrol_demo.zip tabcontrol_src.zip 自定义的标签控件对话框...

    vc++ 开发实例源码包

    详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加解密以及其它的文件加解密),分静态库和动态库方法。 JSCalls_demo js调用的演示源码 树控件拖动 演示了在树控件中来回拖动...

    vc++ 应用源码包_2

    利用Delphi的代码在VC中显示JPG图片,不使用动态连接库。 Mail_Report.zip 一个邮件报告程序。 SrcFirstProg.zip 解释了最基本的MFC程序流程。 tabcontrol_demo.zip tabcontrol_src.zip 自定义的标签控件对话框...

    vc++ 应用源码包_6

    利用Delphi的代码在VC中显示JPG图片,不使用动态连接库。 Mail_Report.zip 一个邮件报告程序。 SrcFirstProg.zip 解释了最基本的MFC程序流程。 tabcontrol_demo.zip tabcontrol_src.zip 自定义的标签控件对话框...

    vc++ 应用源码包_5

    利用Delphi的代码在VC中显示JPG图片,不使用动态连接库。 Mail_Report.zip 一个邮件报告程序。 SrcFirstProg.zip 解释了最基本的MFC程序流程。 tabcontrol_demo.zip tabcontrol_src.zip 自定义的标签控件对话框...

    vc++ 应用源码包_3

    利用Delphi的代码在VC中显示JPG图片,不使用动态连接库。 Mail_Report.zip 一个邮件报告程序。 SrcFirstProg.zip 解释了最基本的MFC程序流程。 tabcontrol_demo.zip tabcontrol_src.zip 自定义的标签控件对话框...

    java源码包---java 源码 大量 实例

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    网管教程 从入门到精通软件篇.txt

    CCB:Visual Basic动态按钮配置文件 CCH:Corel图表文件 CCO:CyberChat数据文件 CCT:Macromedia Director Shockwave投影 CDA:CD音频轨道 CDF:Microsoft频道定义格式文件 CDI:Philip的高密盘交互格式 CDM...

    易语言程序免安装版下载

    修改BUG:VCL相关支持库部分组件在修改个别属性或调用个别方法后不可见,并改进了Delphi版本的支持库SDK。 15. 修改BUG:高级表格在列类型为数值型时,添加新行且省略标题的情况下,会导致程序异常。 16. 修改BUG...

    java源码包2

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

Global site tag (gtag.js) - Google Analytics