代码完成不会列出消息处理程序

NGL*_*GLN 4 delphi code-completion delphi-xe2

在Delphi XE2中处理旧项目时,弹出的代码完成窗口CTRL- SPACE不会列出像Delphi 7这样的消息处理程序:

屏幕截图

在上面的屏幕截图中,WM***缺少例程.这是为什么?

NGL*_*GLN 10

uses子句中的单元名称不是完全限定的.包含每个单元的命名空间,然后找到方法声明的必要类型,让代码完成弹出窗口返回所有成员.

例如:

  • procedure WMActivate(var Message: TWMActivate);找不到时Winapi.Messages.TWMActivate,不会显示
  • procedure CMActivate(var Message: TCMActivate);Vcl.Controls.TCMActivate未找到时将不会显示.

解:

uses
  Winapi.Windows, Winapi.Messages, System.Classes, Vcl.Controls, Vcl.Forms,
  Vcl.Graphics;
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

究竟是为什么这样,我不敢解释.特别是因为显示所有其他方法(不是消息处理程序)是否相关单元是否完全合格.但这并不重要; 在Delphi 2009或更高版本中工作时,您应该习惯使用完全合格的单位名称.