2011-01-12 7 views
1

Self.Parent := nil;을 설정하면 TWebBrowser가 지워지지 않게 할 수 있습니까? 최대화 기능에 필요한 해당 행을 가져 오면 내 양식의 모든 TWebBrowser가 지워집니다. 왜 그런 일을합니까? 이것을 피하려면 어떻게해야합니까?TWebBrowser를 지우는 것을 중지 할 방법이 있습니까?

편집 : '자체'는 현재 양식 (이 경우 AnsForm)이 MainForm에 표시됩니다. 부모의 이전 값은 MainForm의 Tab입니다. Self.Parent을 다른 것으로 설정하려고 시도했지만 동일한 문제가 발생합니다. TWinControl.Parent 속성을 재 할당

+0

이 문맥에서 '자기'는 어떤 종류의 객체를 나타 냅니까? 그리고 '부모'의 이전 가치는 무엇 이었습니까? –

+0

'Self '는 현재 양식 (이 경우'AnsForm')이 MainForm에 표시됩니다. 'Parent'의 이전 값은 MainForm의 Tab입니다. – Dian

+0

왜 부모를 변경해야합니까? –

답변

1

는 파괴 (이 경우, 당신 TForm 객체) 해당 컨트롤의 원인은 HWND, 새로운 HWND (HWND 부모 HWND 없이는 존재할 수없는 아이로)의 제어 다음 시간까지 만들어지지 않습니다 Handle 속성에 액세스합니다 (그때까지 Parent을 사용할 수없는 경우 예외가 발생 함). 컨트롤이 HWND을 파괴하면 모든 자식 컨트롤과 자식 컨트롤 등이 자신의 HWND을 파괴합니다. HWND이 없으면 컨트롤을 표시 할 항목이 없으며 HWND에 저장된 콘텐츠가 손실됩니다. 그래서 TWebBrowser 개체가 삭제됩니다.

일부 구성 요소는 HWND가 파괴 될 때 메모리에 현재의 콘텐츠를 캐시하고 새로운 HWND 사용할 수있을 때 그 내용을 복원하지만, 그렇게 TWebBrowser하지 않습니다 (그리고 수 없습니다). 이 상황에서 유일한 옵션은 수동으로 현재 URL을 다시로드하는 것입니다. 그렇지 않으면 TWebBrowser 개체가 Parent 속성이 변경되는 상위 컨트롤에 상주하지 않도록 UI를 다시 디자인하십시오.

+0

좋습니다. 당신의 도움을 주셔서 감사합니다. :) – Dian

관련 문제