是否有反正當我設置Self.Parent := nil;
時阻止TWebBrowser清除? 當它到達該行(這對於最大化函數是必需的)時,我的表單中的所有TWebBrowser都會清除。爲什麼會這樣做,我該怎麼做才能避免這種情況?無論如何阻止TWebBrowser清除?
編輯: 'Self'是當前窗體(在這種情況下AnsForm)顯示在MainForm上。 Parent的前一個值是MainForm中的一個選項卡。 我試着將Self.Parent
設置爲別的東西,但同樣的事情發生。
是否有反正當我設置Self.Parent := nil;
時阻止TWebBrowser清除? 當它到達該行(這對於最大化函數是必需的)時,我的表單中的所有TWebBrowser都會清除。爲什麼會這樣做,我該怎麼做才能避免這種情況?無論如何阻止TWebBrowser清除?
編輯: 'Self'是當前窗體(在這種情況下AnsForm)顯示在MainForm上。 Parent的前一個值是MainForm中的一個選項卡。 我試着將Self.Parent
設置爲別的東西,但同樣的事情發生。
重新分配TWinControl.Parent
屬性將導致該控件(在這種情況下,您的TForm
對象)破壞其HWND
(作爲一個孩子HWND
離不開父母HWND
存在),以及一個新的HWND
是不是下一個控制的時間,直到創建Handle
屬性被訪問(如果沒有Parent
可用,則會引發異常)。當一個控件銷燬它的HWND
時,它的所有子控件及其子控件等都會破壞它們自己的HWND
。如果沒有HWND
,控件無法顯示,並且存儲在這些HWND
中的任何內容都將丟失。這就是爲什麼你的TWebBrowser
對象被清除。當他們的HWND
被銷燬
一些組件緩存其當前的內容在內存中,然後恢復該內容時,一個新的HWND
變得可用,但TWebBrowser
不會(也不能)做到這一點。在這種情況下,您唯一的選擇是手動重新加載當前的URL。否則,請重新設計UI,以使TWebBrowser
對象不會駐留在其屬性更改的父控件上。
在這種情況下,「Self」是指什麼樣的對象? 「父」的以前的價值是什麼? – 2011-01-12 06:35:59
`Self`是MainForm上顯示的當前窗體(在本例中爲`AnsForm`)。以前的「Parent」值是MainForm中的一個選項卡。 – Dian 2011-01-12 06:44:14