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.