Показать сообщение отдельно
  #3  
Старый 11.05.2009, 23:19
Аватар для Rokuell
Rokuell Rokuell вне форума
Активный
 
Регистрация: 27.12.2006
Адрес: Псков
Сообщения: 274
Версия Delphi: Delphi 7
Репутация: 497
По умолчанию

Вариант 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 - это просто указатель на код, который нужно выполнить.
А идентификатор метода класса - это запись, состоящая уже из двух указателей - указатель на код и указатель на объект методом которого данная процедура является.
__________________
Велик и могуч наш Object Pascal !
ICQ: 357-591-887
Ответить с цитированием