Главная страница
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.019 c
8-34126
pavit
2002-07-19 09:02
2002.11.11
Нужен пример для начинающего.


1-34117
ИгорьК
2002-10-31 15:07
2002.11.11
Доступ к форме Owner-у


3-33874
Victorydiana
2002-10-22 13:40
2002.11.11
Программа не работает на других машинах


1-33926
DVM
2002-10-31 10:25
2002.11.11
Сохранение содержимого ListView в реестре


14-34226
RV
2002-10-19 10:59
2002.11.11
Меня сегодня убьют....