1

クラス宣言では、Ctrl+Space を押して、オーバーライドできる基本クラスの仮想メソッドのリストを取得できます。

ただし、このリストは非常に限られているようです。元。

 TMyBaseClass = class(TInterfacedObject)
 protected
   procedure mymethod; virtual;
 end;

 TMyClass = class(TMyBaseClass)
 protected
   {Ctrl+Space here...}
 end;

TMyClass では、TInterfacedObject と TObject からメソッドを取得しますが、TMyBaseClass からは取得しません。何故ですか?

-ベガー

編集: 私のデルフィのバージョンを忘れてしまった.私は 2007 を使用しています.

4

1 に答える 1

6

これらの IDE ツールが機能する場合と機能しない場合があるためです (これは Delphi/RAD Studio に固有の問題ではありません)。

たとえば、IDE が現在の挿入ポイントまでソースを適切に解析できないことを意味する未処理の編集がある場合、そのような編集は「壊れている」可能性があります。

そのような場合、私は個人的に Ctrl+F9 をすばやく押して、自分が気づいていないコンパイル エラーがないかどうかを確認します。10 回中 9 回あり、それらを修正すると、コード インサイトの動作が修正されます。

新しいユニットで例を逐語的に再作成すると、期待どおりにコード補完リストに「mymethod」が表示されるため、実際のケースでは、基本クラスと派生クラスが実際に他のコードによって分離されている可能性があります。ユニット、およびコード補完を呼び出そうとしている時点で、他のコードに2つの宣言の「間」にエラーが含まれていることを確認しますか?

より一般的なポイントとして、こうしたものを「うまくいくと便利なもの」として扱う方がよいのですが、それらに依存しない習慣や慣行を開発するように努める必要があります。この場合、唯一の代替手段は、オーバーライドされるメソッドの知識です。

于 2009-09-18T09:55:07.867 に答える