Вариант 1. Если у тебя описан класс формы, то добавляешь в него описание события:
Код:
TForm1 = class(TForm)
ButtonOpt: TButton;
procedure Clicked(Sender: TObject);
private
...
public
...
end;
var Win:TForm1;
procedure TForm1.Clicked(Sender: TObject);
begin
Win.Close;
end;
а потом присваиваешь соответствующему событию у кнопки:
Код:
ButtonOpt.OnClick := Clicked;
Вариант 2. Шаманство

описываешь процедуру так:
Код:
procedure Clicked(Sender: TObject);
begin
Win.Close;
end;
А потом, при создании формы например:
Код:
type TNotifyEvent = procedure(Sender: TObject) of object;
TMethod = record
Code, Data: Pointer;
end;
var pmethod : TMethod;
begin
...
pmethod.Code := @Clicked; // указатель на код
pmethod.Data := Win; // указатель на объект, методом которого является данная процедура.
ButtonOpt.OnClick := TNotifyEvent(m1);
...
end
Теория: Идентификатор обычной процедуры, к примеру Clicked - это просто указатель на код, который нужно выполнить.
А идентификатор метода класса - это запись, состоящая уже из двух указателей - указатель на код и указатель на объект методом которого данная процедура является.