Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.011 c
3-33907
JKL-3
2002-10-23 11:17
2002.11.11
Ошибка открытия файлов .DBF


14-34200
SPeller
2002-10-22 12:26
2002.11.11
Проигрыватель MPEG4/DivX под ДОС


1-33924
AndreyAG
2002-10-30 14:04
2002.11.11
TTreeView


8-34126
pavit
2002-07-19 09:02
2002.11.11
Нужен пример для начинающего.


6-34137
Mufta
2002-08-31 14:44
2002.11.11
Как работать через прокси с компонентом TWebBrowser




   Наверх