Текущий архив: 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.45 MB
Время: 0.008 c