Delphi:Codecompletion覆盖basemethods

Veg*_*gar 1 delphi class-completion

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

不过,这份清单似乎非常有限.防爆.

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

 TMyClass = class(TMyBaseClass)
 protected
   {Ctrl+Space here...}
 end;
Run Code Online (Sandbox Code Playgroud)

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

-Vegar

编辑:忘了我的delphi版本......我正在使用2007.

Del*_*ics 6

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

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

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

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

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

  • 在成功编译之后,事情是否有效?有时IDE只需要"轻推"或鼓励"赶上". (2认同)