在类声明中,您可以按Ctrl + Space来获取可以覆盖的基类中的虚拟方法列表。
但这个清单似乎非常有限。防爆。
TMyBaseClass = class(TInterfacedObject)
protected
procedure mymethod; virtual;
end;
TMyClass = class(TMyBaseClass)
protected
{Ctrl+Space here...}
end;
在TMyClass中,我从TInterfacedObject和TObject获取方法,但不从TMyBaseClass获取方法。那是为什么?
-Vegar
编辑:忘了我的delphi版本......我正在使用2007。答案 0 :(得分:6)
因为有时这些IDE工具有效,有时它们不工作(并且这不是Delphi / RAD Studio独有的问题)。
例如,如果您有其他未完成的编辑,这意味着IDE无法充分解析您的源到当前插入点,那么这些事情可能会被“破坏”。
在这种情况下,我个人尝试快速按Ctrl + F9查看是否存在我可能不知道的编译错误。有10次中有9次,然后修复那些修复代码洞察行为。
在新单元中逐字重新创建示例,我按照预期在代码完成列表中得到“mymethod”,因此在实际情况下,您的基类和派生类实际上可能被其他代码分隔,也许即使在单独的单元中,并且其他代码在您尝试调用代码完成时包含两个声明之间的错误?
作为一个更普遍的观点,ime最好将“工作时很有钱”这样的事情当作“但是要努力养成不依赖它们的习惯和做法”。在这种情况下,唯一的替代方法是知道要覆盖的方法,这对我承认并没有多大帮助。