我有一個包含多個分隔線和麪板的窗體。中間是一個以TWebBrowser設置爲與alClient對齊的面板。設置爲alClient的TWebBrowser在客戶端區域更改時不會調整大小
以前這個工作很好。但是,在使用Internet Explorer 8的Windows 7上,瀏覽器調整不正確。其他一切(即面板)都是正確的尺寸,而不是網絡瀏覽器。有時當你點擊進入瀏覽器時,或者當你滾動瀏覽器的時候會跳到正確的大小。但這並不是100%的時間。
我試圖直接處理調整大小,並強制控件更改大小。我似乎無法找到一種能夠產生任何區別的方法(即.Invalidate; .Repaint; .Update;)TWebBrowser是包裝Internet Explorer控件的OLE控件(ActiveX)。關於如何進行調整大小的任何想法都會發生?
更新的背景:
我這個縮小到只有當我有我的父親改爲其網站另一個表單中子窗體發生。我的TWebBrowser控件位於子窗體上,我隨時可以使用它來顯示HTML文檔。
在我的父窗體中,我有一個網格,一個分割器和一個面板,網格設置爲對齊頂部和麪板集以對齊客戶端。我的子表單(稱爲THtmlViewer)將其父設置爲面板。 THtmlViewer窗體設置爲alClient並且子窗體上的TWebBrowser控件也設置爲對齊客戶端。
如果我在THtmlViewer窗體的窗體大小上做任何事情,我會遇到這個問題。任何直接在FormResize中或直接使用align屬性的東西。但是,如果我從父窗體調用我的調整大小,一切工作正常。
關鍵似乎是關閉THtmlViewer窗體中的調整大小代碼。如果我留下一個OnResize處理程序或對齊集,那麼它與父級中的操作無關,調整大小操作不正確。
我仍然困惑爲什麼這是必要的,爲什麼我不能強制它在正確的調整大小(THtmlViewer)更新。
另外,我還注意到,Windows 7上的Delphi 2007與IDE中的「歡迎頁面」有完全相同的問題。
我已經解決了該問題,方法是將子窗體的OnResize設置爲nil,然後從父窗口的OnResize處理程序中調用我的內部ForceResize。我仍然希望從THtmlViewer表單處理這一切,並接受讓我避免這種攻擊的答案。
我更新了一些更詳細的問題。事實證明,這些來自「父」形式的調用將起作用,但是在我的嵌套形式中,OnResize處理程序中沒有任何內容似乎正常工作。 – 2011-01-24 21:48:39