7. 7. 2013, Vladimír Klaus, navštíveno 3675x

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í