4

Delphi XE2 で古いプロジェクトに取り組んでいるとき、後にポップアップするコード補完ウィンドウには、Delphi 7 のようにメッセージ ハンドラが一覧表示されませんCTRLSPACE

スクリーンショット

上のスクリーン ショットでは、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 に答える