Показать сообщение отдельно

  #3  
Старый 14.03.2010, 11:16
GhostOnline
Участник форума
Регистрация: 20.12.2008
Сообщений: 277
Провел на форуме:
828081

Репутация: 84
По умолчанию

Вот этот модуль поможет тебе разобраться с событиями, все комментировано и разжевано. Создай гуи-проект и замени код на этот
Код:
unit Unit1;  interface  uses   Classes, Forms, StdCtrls, Controls;  type {Вот смотри, это класс у которого будет событие Допустим что наш класс должен будет складывать числа а событие допусим будет возникать когда сумма меньше нуля}   TMain = class       private 	   {Это поле-событие, тут мы указываем тип 	    TNotifyEvent но можно использовать и свои}        FOnDenjf: TNotifyEvent;       public 	   {Объявляем свойство-событие в разделе паблик, чтобы событие можно было использовать извне}        property OnDenjf: TNotifyEvent read FOnDenjf write FOnDenjf;        {Собственно метод класса в котором будет генериться событие	} 	     function Sum(a, b : Integer): Integer; //     end;    {Теперь пример использования нашего класса извне   Допустим у нас есть клас формы TForm1 с компонентом Label1  Мы знаем что событие генериться когда сумма меньше нуля  и используем это знание чтобы оповестить пользователя об этом  Тогда ввведем в класс формы процедуру с такими же аргументами  как и у типа TNotifyEvent}   TForm1 = class(TForm)     Button1: TButton;     Label1: TLabel;     procedure Button1Click(Sender: TObject);     procedure Test(sender: TObject);   private     { Private declarations }   public     { Public declarations }   end;  var   Form1: TForm1;  implementation  {$R *.dfm}  { TMain }   {Реализация метода и генрация события} function TMain.Sum(a, b : Integer): Integer; begin  result := a + b;  {проверяем результат и если он меньше нуля то генерим событие}  if (result < 0) and (assigned(FOnDEnjf))    then FOnDenjf(self); end;  {Применение} procedure TForm1.Button1Click(sender: TObject);  var 	Main: TMain;  begin    Main := TMain.Create;    Main.OnDenjf := Test;    {Вот тут пробуй подставлять разные    значения чтобы убедитьься что все работает}    Main.Sum(3, -4);    Main.Free;  end;  procedure TForm1.Test(sender: TObject);  begin   Label1.Caption := 'Сумма меньше нуля!!!';  end;  end.
 
Ответить с цитированием