Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.02;
Скачать: CL | DM;

Вниз

помогите ламеру добавить в свой класс событие   Найти похожие ветки 

 
msgipss   (2004-04-16 13:47) [0]

например есть класс
test=class
  k1:word;             переменная
  procedure inck(k:word);       procedure увеличивает на 1 k1
  onchange        событие что произошло какое то увеличение
end;
как в delphi реализовать события, смотрел примеры из vcl не сильно понятно
Было бы здорово если бы на этом примере показали..

Заранее благодарен..


 
Владислав ©   (2004-04-16 13:51) [1]

...
private
 FOnChange: TNotifyEvent;
protected
 procedure DoChange; virtual;
public
 OnChange: TNotifyEvent read FOnChange write FOnChange;
...

...
procedure TTest.DoChange;
begin
 if Assigned(FOnChange) then
   FOnChange(Self)
end;
...

Что то еще не ясно?


 
Семен Сорокин ©   (2004-04-16 14:13) [2]

type
 TK1Event = procedure (Sender: TObject; var Value: integer) of object;  

 TTest = class
 private
   FK1 : integer;
   FOnChange: TK1Event;
   procedure SetK1(Value: integer);
 protected
   procedure DoChange(var Value: integer); virtual;  
 public
   property K1: integer read FK1 write SetK1;
   property OnChange: TK1Event read FOnChange write FOnChange;
 end;

...

procedure TTest.SetK1(Value: integer);
begin
 if FK1 <> Value then begin
  DoChange(Value);
  FK1 := Value
 end
end;

procedure TTest.DoChange(var Value: integer);
begin
 if Assigned(FOnChange) then
  FOnChange(Self, Value)
end;


 
Владислав ©   (2004-04-16 14:16) [3]

> Семен Сорокин ©   (16.04.04 14:13) [2]

А на кой вот это:
TK1Event = procedure (Sender: TObject; var Value: integer) of object;
?
Если именно для этого, то мож лучше назвать BeforeChange? ;)


 
msgipss   (2004-04-16 14:36) [4]

спасибо за ответы (вполне понятно)  8))
тема закрыта


 
Юрий Зотов ©   (2004-04-16 14:46) [5]

Только метод диспетчеризации (DoChange) лучше делать не virtual, а dynamic. Экономит память.


 
Владислав ©   (2004-04-16 14:52) [6]

> Юрий Зотов ©   (16.04.04 14:46) [5]

Ну да. Согласен. И, насколько понимаю, экономит, если наследников много. Так?



Страницы: 1 вся ветка

Текущий архив: 2004.05.02;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.022 c
11-1065608167
Stargazer
2003-10-08 14:16
2004.05.02
JpegObj &amp; FPC


4-1078831672
mixi
2004-03-09 14:27
2004.05.02
Значения переменных


3-1081240486
Sirus
2004-04-06 12:34
2004.05.02
Как бы организовать выборку из процедур???


14-1081150358
Странник
2004-04-05 11:32
2004.05.02
Билл Гейтс лишился титула главного богача планеты


7-1079015293
Comp
2004-03-11 17:28
2004.05.02
Windows NT