unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Unit2, StdCtrls;type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }  public  end;var
  Form1: TForm1;implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);
var
    pBc:TButtonClick;
begin
    pBc:=TButtonClick.Create(Button1);end;end.
----------------------------------------------unit Unit2;interface
uses
    stdctrls,Dialogs;
type
    TButtonClick=class
        private
            m_pButton:TButton;
            procedure OnClick(sender:TObject);
        public
            constructor Create(pButton:TButton);
            destructor Destroy; override;
    end;implementation{ TButtonClick }constructor TButtonClick.Create(pButton: TButton);
begin
    m_pButton:=pButton;
    m_pButton.OnClick:=OnClick;
end;destructor TButtonClick.Destroy;
begin
  inherited;end;procedure TButtonClick.OnClick(sender: TObject);
begin
    showmessage('ha ha');
end;end.