Delphi:Codecompletion覆盖basemethods

时间:2009-09-18 08:50:14

标签: delphi class-completion

在类声明中,您可以按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。

1 个答案:

答案 0 :(得分:6)

因为有时这些IDE工具有效,有时它们不工作(并且这不是Delphi / RAD Studio独有的问题)。

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

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

在新单元中逐字重新创建示例,我按照预期在代码完成列表中得到“mymethod”,因此在实际情况下,您的基类和派生类实际上可能被其他代码分隔,也许即使在单独的单元中,并且其他代码在您尝试调用代码完成时包含两个声明之间的错误?

作为一个更普遍的观点,ime最好将“工作时很有钱”这样的事情当作“但是要努力养成不依赖它们的习惯和做法”。在这种情况下,唯一的替代方法是知道要覆盖的方法,这对我承认并没有多大帮助。