a=class
<событие> c; //рассписывать не хочу ))
procedure b; virtual;
end;
procedure a.b;
begin
<действия>
<вызов C>
end;
События в потомках класса
Предположим у меня есть класс "а" с событием "c" и методом "b"
Код:
Мы делаем наследника "a1" и перекрываю метод "b"
Код:
a1=class(а)
procedure b; override;
end;
procedure a1.b;
begin
inherited b;
<действия>
<вызов C>
end;
procedure b; override;
end;
procedure a1.b;
begin
inherited b;
<действия>
<вызов C>
end;
И вот проблема в том, что событие выполняется 2 раза, а мне нужно, что бы оно выполнялось только в КОНЦЕ метода "b" для ЛЮБОГО потомка.
Не подскажите, как это реализовать?
p.s. Меня этот вопрос интересует не применительно к конкретному случаю, а, так сказать, концептуально.
procedure b;
end;
procedure a1.b;
begin
<действия>
<вызов C>
inherited b;
end;[/LEFT]
не вызывай событие C в новой процедуре ведь это событие всё равно вызовет старый обработчик
Цитата: ahilles
не вызывай событие C в новой процедуре ведь это событие всё равно вызовет старый обработчик
Так в этом и проблема, что вызывать нужно именно в КОНЦЕ метода ЛЮБОГО потомка.
Простой пример, если потомок дополнительные под классы в себе создаёт, тогда из события к ним нельзя будет обратиться... т.к. ошибка одрисациии....
Цитата: Borland_prog
[LEFT]a1=class(а)
procedure b;
end;
procedure a1.b;
begin
<действия>
<вызов C>
inherited b;
end;[/LEFT]
procedure b;
end;
procedure a1.b;
begin
<действия>
<вызов C>
inherited b;
end;[/LEFT]
А если inherited b; нужно в начале процедуры вызывать, к примеру конструктор?