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

Вниз

Как повесить Event на обновление собственной структуры?   Найти похожие ветки 

 
AndrewK ©   (2002-11-01 09:46) [0]

Уважаемые мастера!
Подскажите можно ли повесить свой обработчик событий на обновление своей структуры?
К примеру, есть класс наследник от TList.

type
tMyClass = class (TList)
destructor Destroy; override;
procedure Add (Value : Integer);
procedure Delete (Index : Integer);
end;

destructor tMyClass.Destroy; override;
begin
while Count <> 0 do
Delete(0);
inherited Destroy;
end;

procedure tMyClass.Add (Value : Integer);
begin
inherited Add(TObject(Value));
end;

procedure tMyClass.Delete (Index : Integer);
begin
inherited Delete(Index);
end;


Пользователь может добавлять или удалять элементы из списка. Есть MDIСhild окно, в котором происходит отображение данного списка. Список может меняться из других чилдовых окон.

Вопрос. Можно ли описать событие на изменение списка, например на добавление или удаление, и на него повесить процедуру обновления тех окон, где этот список используется? По моему не красиво будет вызывать эту процедуру явным образом при изменении, ИМХО.


 
MBo ©   (2002-11-01 09:49) [1]

Да, можно, введи событие, например, OnChange


 
Alex4444444444   (2002-11-01 09:52) [2]

Ya ne ponyal, pochemu ne sdelat", kak vse v VCL? Typa,

type
TMyClass = class(TList)
private
FOnAdd: TNotifyEvent;
FOnDelete: TNotifyEvent;
...
public
property OnAdd: TNotifyEvent read FOnAdd write FOnAdd;
...
end;

procedure TMyClass.Add ...
begin
inherited ...
if Assigned(FOnAdd) then FOnAdd(Self);
end;


Mozhno poizvrashat"sya i vstavit" v FOnAdd info o tom, chto proishodit.


 
MBo ©   (2002-11-01 09:54) [3]

вводишь поле
FOnChange: TNotifyEvent;

procedure DoChange;dynamic;//обычно dynamic, но не обязательно, если не будет наследников

property OnChange: TNotifyEvent read FOnChange write FOnChange;

procedure TSuperList.DoChange;
begin
..здесь и в конце можно какие-то обязательные действия выполнять
if Assigned(FOnChange) then FOnChange(Self);
end;


 
AndrewK ©   (2002-11-01 10:19) [4]

СПАСИБО !!!




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

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

Наверх




Память: 0.47 MB
Время: 0.018 c
1-33991
KPY
2002-10-30 15:57
2002.11.11
как узнать уже создан компонент на форме или еще нет?


4-34285
Slava V.
2002-09-26 11:40
2002.11.11
Как перетащить ссылки из MSIE в мою прогу?


4-34321
sergserg
2002-09-30 08:32
2002.11.11
Активация чужой программы


1-34073
p@s
2002-10-30 16:52
2002.11.11
Отображение всех форм на таскбаре


3-33901
Dimedrol
2002-10-21 22:58
2002.11.11
DBGrid + Wrap text