7

私の Delphi プログラムは正常にビルドおよびコンパイルされますが、デバッグ モードで実行するとすぐに次のエラーが発生します。

プロパティ ClientHeight が存在しません

すべての .DFM ファイル ソースを調べた後、すべての形式でコードがそこにあります。

クライアントの高さ = 111

ここでどこが間違っているのか理解できませんか?

4

5 に答える 5

7

これが古いスレッドであることは知っていますが、この問題を抱えている他の人に役立つことを願っています.

クラスが他のクラスから継承され、プロパティがそこにあることがわかっているこのような場合は、それらを再公開するだけです。公開されたセクションを追加して、もう一度追加します。例:

published
property ClientWidth;
property ClientHeight;

これにより、親クラスに前方宣言がある可能性がある部分のこれらの typeinfo をコンパイルするようにコンパイラが強制され、問題が解決されます。最終的に解決策にたどり着くまでに3日かかりました。

于 2015-02-06T11:44:56.377 に答える
7

フォームは新しいバージョンの Delphi で保存されます。残念ながら、IDE で各フォームを開いて再度保存し、新しいプロパティをクリアする必要があります。DFMCheck という名前のツールがあります ( http://andy.jgknet.de/blog/ide-tools/dfmcheck/ )。これは、すべてのフォームを調べて、実行時にのみ表示されるフォームの問題を通知するアドオンです。

問題が発生している理由はこれです。Delphi は、フォームをすべてのプロパティとともに保存します。ストリーミングを使用して、実行時にフォームをロードします。存在しないプロパティを含むフォームを読み込もうとすると、プロパティが存在しないときにストリーミング システムがコンポーネントにプロパティを設定しようとするため、このようなエラーが発生します。

于 2014-03-04T19:41:49.950 に答える