私はいくつかのスプリッタとパネルを持つフォームを持っています。中央には、alClientを整列するように設定されたTWebBrowserで終わるパネルがあります。クライアント領域が変更されたときにalClientに設定されたTWebBrowserのサイズは変更されません
これまではうまくいきました。ただし、Internet Explorer 8を搭載したWindows 7では、ブラウザのサイズが正しく調整されていません。他のすべて(パネルなど)は、ウェブブラウザではなく、正しいサイズです。ときどきブラウザをクリックすると、ブラウザをスクロールするときにブラウザが正しいサイズにジャンプすることがあります。それは時間の100%しかし起こることはありません。
私はサイズ変更に直接対処し、サイズを変更するようにコントロールしています。
TWebBrowserは、Internet ExplorerのコントロールをラップするOLEコントロール(ActiveX)です。どのように私はサイズ変更を行うことができます上の任意のアイデアですか?
更新背景:
私は私が別のフォーム内のサイトに親を変更する子フォームを持っている場合にのみ起こっにこれを絞り込みます。私のTWebBrowserコントロールは、HTMLドキュメントを表示する必要があるときに私が使用する子フォームにあります。
私の親のフォームにグリッド、スプリッタ、およびグリッドが[上揃え]に設定され、パネルがクライアントを整列するように設定されたパネルがあります。私の子フォーム(THtmlViewerと呼ばれる)の親はパネルに設定されています。 THtmlViewerフォームはalClientに設定され、子フォームのTWebBrowserコントロールもクライアントを調整するように設定されます。
THtmlViewerフォームのサイズ変更フォームで何か操作を行うと、この問題が発生します。 FormResize内に直接存在するもの、またはalignプロパティを使用して間接的に存在するものしかし、親フォームからサイズ変更を呼び出すと、すべて正常に動作します。
キーがTHtmlViewerフォームのサイズ変更コードを無効にしているようです。 OnResizeハンドラまたはアライメントセットを残しておけば、親で何をするかは関係ありません。リサイズは正しく行われません。
これがなぜ必要なのか、正しいサイズ変更(THtmlViewer)で強制的に更新することができない理由は、私はまだ混乱しています。
私はまた、Delphi 2007 for Windows 7がIDEの「ようこそページ」とまったく同じ問題を抱えていることに気付きました。
私はこの問題を回避するために、子フォームのOnResizeをnilに設定し、親のOnResizeハンドラから内部のForceResizeを呼び出すメソッドを追加しました。私はまだこのすべてをTHtmlViewerフォームから扱いたいと思っています。私はこのハックを避けることができるという答えを受け入れます。
私は質問をさらに詳細に更新しました。 「親」フォームからのこれらの呼び出しは機能しますが、ネストされたフォームでは、OnResizeハンドラの何も正しく動作していないようです。 –