Деструктор. Другие методы.
Вызывайте наследуемый метод после реализации дополнительных действий:
Procedure MyObject.Done; begin {Реализация дополнительных действий} {Вызов наследуемого деструктора Done} end;
Работа деструктора проходит в обратном порядке по отношению к конструктору. Вначале Вы должны освободить всю дополнительно распределенную динамическую память, а уже затем вызвать наследуемый деструктор, чтобы уничтожить весь объект.
Другие методы
Порядок вызова наследуемого метода зависит от конкретного алгоритма. В большинстве случаев наследуемый метод вызывается первым, но могут использоваться и другие последовательности. Особое значение имеет вызов наследуемого обработчика событий HandleEvent. В самом общем виде структура нового обработчика будет такой:
Procedure MyObject.HandleEvent(var Event: TEvent); begin {Изменение наследуемых свойств} {Вызов наследуемого обработчика} {Добавление новых свойств} end;
Таким образом, вначале Вы должны запрограммировать те действия, которые изменяют стандартное поведение перекрытого обработчика, затем вызвать его и, наконец, осуществить новую обработку событий. Разумеется, любая из этих трех частей может отсутствовать. Например, стандартный обработчик TDialog.HandleEvent лишь расширяет свойства наследуемого метода TWindow.HandleEvent, добавляя в него обработку событий от клавиатуры и событий-команд:
Procedure TDialog.HandleEvent(var Event: TEvent); begin Inherited HandleEvent(Event); case Event.what of evKeyDown: ….. evCommand: ….. end; end;
Этот обработчик перехватывает все события от клавиатуры и мыши, в том числе и нажатие на клавишу Tab. Если Вы хотите обработать событие от клавиши Tab особым способом, Вы должны перехватить это событие до вызова стандартного обработчика. Например:
Procedure TNoTabsDialog.HandleEvent(var Event: TEvent); begin if (Event.What = evKeyDown) then if (Event.KeyCode = kbTab) or (Event.KeyCode = kbShiftTab) then ClearEvent(Event); Inherited HandleEvent(Event); end;