Delphi 中关于Button的OnClick的思考

Delphi 中关于Button的OnClick的思考
Unit Unit1;
Interface
Uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;
Type
  TForm1 = Class(TForm)
    Panel1: TPanel;
    Button1: TButton;
    Procedure Button1Click(Sender: TObject);
    Procedure Panel1Click(Sender: TObject);
  Private
    { Private declarations }
  Public
    { Public declarations }
  End;
Var
  Form1             : TForm1;
Implementation
{$R *.dfm}
Procedure TForm1.Button1Click(Sender: TObject);
Begin
  ShowMessage('Button1Click');
End;
Procedure TForm1.Panel1Click(Sender: TObject);
Begin
//如果TForm1内有 Button1: TButton;,那么下面两方式都是对 button1的onclick调用,
  Form1.Button1Click(form1);
//是直接调用TForm1的Button1Click过程,跟button1对象是否存在没有关系,
//如果在窗体设计面版中删除button1对象,仍能运行
  Form1.Button1.Click;
//是直接调用Button1对象的Click过程,跟button1对象有直接关系,
//如果在窗体设计面版中删除button1对象,此方法也不存在
//如果我们把一个其他能产生click控件产生一个其click过程时,
//该过程以其控件名[button1+click+(Sender: TObject)相应的参数]自动生成方法名,
//如果在窗体设计面版中删除该对象,对象声名删除Button1: TButton;,
//但其产生的方法(如click,mousedown等等),并没有被相应删除,
//如果我们再新建一个同名但不类的控件时,
//只要在Object Inspector里的Events属性卡双击相应的过程,仍会关联上原来的过程,
//虽然这两者没有必然的联系.
End;
End.