私の Delphi プログラムは正常にビルドおよびコンパイルされますが、デバッグ モードで実行するとすぐに次のエラーが発生します。
プロパティ ClientHeight が存在しません
すべての .DFM ファイル ソースを調べた後、すべての形式でコードがそこにあります。
クライアントの高さ = 111
ここでどこが間違っているのか理解できませんか?
私の Delphi プログラムは正常にビルドおよびコンパイルされますが、デバッグ モードで実行するとすぐに次のエラーが発生します。
プロパティ ClientHeight が存在しません
すべての .DFM ファイル ソースを調べた後、すべての形式でコードがそこにあります。
クライアントの高さ = 111
ここでどこが間違っているのか理解できませんか?
これが古いスレッドであることは知っていますが、この問題を抱えている他の人に役立つことを願っています.
クラスが他のクラスから継承され、プロパティがそこにあることがわかっているこのような場合は、それらを再公開するだけです。公開されたセクションを追加して、もう一度追加します。例:
published
property ClientWidth;
property ClientHeight;
これにより、親クラスに前方宣言がある可能性がある部分のこれらの typeinfo をコンパイルするようにコンパイラが強制され、問題が解決されます。最終的に解決策にたどり着くまでに3日かかりました。
フォームは新しいバージョンの Delphi で保存されます。残念ながら、IDE で各フォームを開いて再度保存し、新しいプロパティをクリアする必要があります。DFMCheck という名前のツールがあります ( http://andy.jgknet.de/blog/ide-tools/dfmcheck/ )。これは、すべてのフォームを調べて、実行時にのみ表示されるフォームの問題を通知するアドオンです。
問題が発生している理由はこれです。Delphi は、フォームをすべてのプロパティとともに保存します。ストリーミングを使用して、実行時にフォームをロードします。存在しないプロパティを含むフォームを読み込もうとすると、プロパティが存在しないときにストリーミング システムがコンポーネントにプロパティを設定しようとするため、このようなエラーが発生します。