Delphi XE2 で古いプロジェクトに取り組んでいるとき、後にポップアップするコード補完ウィンドウには、Delphi 7 のようにメッセージ ハンドラが一覧表示されませんCTRL。SPACE
上のスクリーン ショットでは、WM***
ルーチンが欠落しています。何故ですか?
Delphi XE2 で古いプロジェクトに取り組んでいるとき、後にポップアップするコード補完ウィンドウには、Delphi 7 のようにメッセージ ハンドラが一覧表示されませんCTRL。SPACE
上のスクリーン ショットでは、WM***
ルーチンが欠落しています。何故ですか?
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 以降で作業する場合は、完全修飾ユニット名を使用することに慣れる必要があります。