2011-01-12 3 views
1

Self.Parent := nil;を設定すると、TWebBrowserがクリアされなくなりますか? その行に到達すると(最大化関数に必要)、フォームのすべてのTWebBrowserがクリアされます。それはなぜそれを行うのですか?これを避けるために私は何ができますか?TWebBrowserをクリアするのをやめてもらえますか?

EDIT: 'Self'は、現在のフォーム(この場合はAnsForm)がメインフォームに表示されます。 親の以前の値は、MainFormのタブです。 Self.Parentを別のものに設定しようとしましたが、同じことが起こります。 TWinControl.Parentプロパティを再割り当て

+0

この文脈では、「自己」はどのような種類のオブジェクトを指していますか?そして、「親」の以前の価値は何でしたか? –

+0

'Self'は、メインフォームに表示されている現在のフォーム(この場合は' AnsForm')です。以前の 'Parent'の値は、MainFormのTabです。 – Dian

+0

なぜあなたは 'parent'を変更する必要がありますか? –

答えて

1

(この場合は、あなたのTFormオブジェクト)コントロールがHWND(親HWNDなしでは存在できないHWND子として)を破壊することになり、新しいHWNDはのを制御する次の時間までに作成されていませんHandleプロパティにアクセスします(それまでにParentが利用可能でない場合は、例外が発生します)。コントロールがそのHWNDを破棄すると、その子コントロールとその子コントロールのすべてが破棄され、同様に自身のHWNDも破棄されます。 HWNDがなければ、コントロールには何も表示されず、HWNDに格納されているコンテンツはすべて失われます。そのため、あなたのTWebBrowserオブジェクトはクリアされます。

一部のコンポーネントは、そのHWNDが破壊されたときにメモリに彼らの現在のコンテンツをキャッシュし、新しいHWNDが利用可能になったとき、その内容を復元し、それを行うTWebBrowserない(できません)。この状況で唯一のオプションは、現在のURLを手動で再度読み込むことです。それ以外の場合は、TWebBrowserオブジェクトがParentプロパティが変更される親コントロールに存在しないようにUIを再設計します。

+0

ご協力いただきありがとうございます。 :) – Dian

関連する問題