4

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

截屏

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

4

1 回答 1

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;

在此处输入图像描述

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

于 2013-05-19T21:15:30.503 回答