Delphi: завершение кода для переопределения базовых методов
В объявлении класса вы можете нажать Ctrl+Space, чтобы получить список виртуальных методов в базовом классе, которые вы можете переопределить.
Этот список, похоже, очень ограничен. Ex.
TMyBaseClass = class(TInterfacedObject)
protected
procedure mymethod; virtual;
end;
TMyClass = class(TMyBaseClass)
protected
{Ctrl+Space here...}
end;
В TMyClass я получаю методы из TInterfacedObject и TObject, но не из TMyBaseClass. Это почему?
-Vegar
РЕДАКТИРОВАТЬ: Забыли мою версию Delphi... Я использую 2007.
1 ответ
Потому что иногда эти инструменты IDE работают, а иногда нет (и это не проблема, которая уникальна для Delphi/RAD Studio).
Например, если у вас есть другие ожидающие редактирования, которые означают, что IDE не может адекватно проанализировать ваш источник до текущей точки вставки, то, вероятно, такие вещи будут "сломаны".
В таких случаях я лично пытаюсь быстро нажать Ctrl+F9, чтобы увидеть, есть ли ошибки компиляции, о которых я, возможно, не знаю. 9 из 10 есть, и исправление этих ошибок исправляет поведение понимания кода.
Воссоздавая ваш пример дословно в новом модуле, я получаю "mymethod" в моем списке завершения кода, как и ожидалось, поэтому возможно, что в вашем реальном случае ваш базовый класс и ваш производный класс фактически разделены другим кодом, возможно, даже в отдельном единиц, и что этот другой код содержит ошибки "между" двумя объявлениями в то время, когда вы пытаетесь вызвать завершение кода?
В более общем смысле, лучше относиться к таким вещам, как "приятно иметь, когда они работают", но пытаться развивать привычки и практики, которые не зависят от них. В этом случае единственной заменой является знание методов, которые нужно переопределить, что не очень помогает, я признаю.