2011-01-12 66 views
1

是否有反正當我設置Self.Parent := nil;時阻止TWebBrowser清除? 當它到達該行(這對於最大化函數是必需的)時,我的表單中的所有TWebBrowser都會清除。爲什麼會這樣做,我該怎麼做才能避免這種情況?無論如何阻止TWebBrowser清除?

編輯: 'Self'是當前窗體(在這種情況下AnsForm)顯示在MainForm上。 Parent的前一個值是MainForm中的一個選項卡。 我試着將Self.Parent設置爲別的東西,但同樣的事情發生。

+0

在這種情況下,「Self」是指什麼樣的對象? 「父」的以前的價值是什麼? – 2011-01-12 06:35:59

+0

`Self`是MainForm上顯示的當前窗體(在本例中爲`AnsForm`)。以前的「Parent」值是MainForm中的一個選項卡。 – Dian 2011-01-12 06:44:14

回答

1

重新分配TWinControl.Parent屬性將導致該控件(在這種情況下,您的TForm對象)破壞其HWND(作爲一個孩子HWND離不開父母HWND存在),以及一個新的HWND是不是下一個控制的時間,直到創建Handle屬性被訪問(如果沒有Parent可用,則會引發異常)。當一個控件銷燬它的HWND時,它的所有子控件及其子控件等都會破壞它們自己的HWND。如果沒有HWND,控件無法顯示,並且存儲在這些HWND中的任何內容都將丟失。這就是爲什麼你的TWebBrowser對象被清除。當他們的HWND被銷燬

一些組件緩存其當前的內容在內存中,然後恢復該內容時,一個新的HWND變得可用,但TWebBrowser不會(也不能)做到這一點。在這種情況下,您唯一的選擇是手動重新加載當前的URL。否則,請重新設計UI,以使TWebBrowser對象不會駐留在其屬性更改的父控件上。