Delphi a WebBrowser - Navigace ve skryté komponentě způsobí chybu

7. 7. 2013, Vladimír Klaus, přečteno 2576x

Delphi
Internet

Občas se stává, že pokud potřebujeme navigovat ve WB komponentě, která není vidět, dojde (dříve nebo později – třeba při zavírání formuláře) ke krachu, resp. nějaké chybě.

Delphi a WebBrowser, díl 1

Důvodem této podivnosti je optimalizace vytváření formuláře z hlediska rychlosti a nároků na paměť. Delphi může „vytvořit“ některé komponenty, až když jsou opravdu potřeba (a skrytá komponenta není zatím potřeba). Ony ty komponenty jsou vytvořeny (nejsou nil), ale přesto to v některých případech nedostačuje. A WB je hodně speciální komponenta. Takto to dopadne, když voláte nějakou ExecWB funkci...

Delphi a WebBrowser, díl 1

Řešením je, že si vyžádáme, aby komponenta byla opravdu plně vytvořena. Ideální místo může být FormShow nebo dle uvážení, kam přidáme toto volání.

WebBrowser1.HandleNeeded;

Pak už není problém s WB korektně pracovat, i když není vidět.

 

Malá aplikace ukazující práci s WB je zdarma ke stažení