1

在类声明中,您可以按 Ctrl+Space 来获取基类中可以覆盖的虚拟方法列表。

不过,这个列表似乎非常有限。前任。

 TMyBaseClass = class(TInterfacedObject)
 protected
   procedure mymethod; virtual;
 end;

 TMyClass = class(TMyBaseClass)
 protected
   {Ctrl+Space here...}
 end;

在 TMyClass 中,我从 TInterfacedObject 和 TObject 中获取方法,但不是从 TMyBaseClass 中获取方法。这是为什么?

-素食主义者

编辑:忘记我的delphi版本......我使用的是2007。

4

1 回答 1

6

因为有时这些 IDE 工具可以工作,有时不能(而且这不是 Delphi/RAD Studio 独有的问题)。

例如,如果您还有其他未完成的编辑,这意味着 IDE 无法将您的源充分解析到当前插入点,那么这些事情很可能会被“破坏”。

在这种情况下,我个人会尝试快速 Ctrl+F9 来查看是否存在我可能不知道的编译错误。10 次中有 9 次,修复这些然后修复代码洞察行为。

在一个新单元中逐字重新创建您的示例,我在我的代码完成列表中得到了“mymethod”,如预期的那样,所以在您的实际情况下,您的基类和派生类实际上是否被其他代码分开,甚至可能是分开的单位,并且在您尝试调用代码完成时,其他代码包含两个声明“之间”的错误?

作为一个更普遍的观点,我最好将这些事情视为“当他们工作时很高兴”,但要尝试养成不依赖它们的习惯和做法。在这种情况下,唯一的替代品是了解要覆盖的方法,我承认这没有多大帮助。

于 2009-09-18T09:55:07.867 回答