Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.054 c
14-1081426922
TUser
2004-04-08 16:22
2004.05.02
Определитель матрицы


3-1080814223
wer
2004-04-01 14:10
2004.05.02
поиск


1-1082110808
webpauk
2004-04-16 14:20
2004.05.02
Transparent text


7-1078346709
HardClubber
2004-03-03 23:45
2004.05.02
Звонить по телефону с компа


14-1081337263
Alex1988
2004-04-07 15:27
2004.05.02
Как убрать Alert message?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский