【问题标题】:Code-completion doesn't list message handlers代码完成不列出消息处理程序
【发布时间】:2013-05-14 10:08:58
【问题描述】:

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

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

【问题讨论】:

    标签: delphi delphi-xe2 code-completion


    【解决方案1】:

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

    例如:

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

    解决方案:

    uses
      Winapi.Windows, Winapi.Messages, System.Classes, Vcl.Controls, Vcl.Forms,
      Vcl.Graphics;
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-09
      • 2013-03-30
      • 1970-01-01
      • 1970-01-01
      • 2019-01-15
      相关资源
      最近更新 更多