03.08.2013, Vladimír Klaus, navštíveno 4797x
Komponenta WB se docela často používá pro zobrazení různých informací nebo HTML textů, ale není vůbec pěkné, když na okno může uživatel kliknout pravým tlačítkem a uvidí kontextové menu známé z IE.
Toto menu se nejlépe zakazuje přímo v HTML stránce, nastavením „oncontextmenu“.
<body oncontextmenu="return false">
Podobně můžete zakázat i další akce, jak ukazuje následující příklad. To se hodí, pokud je okno čistě informační a nechcete, aby se uživatel pokoušel s ním něco dělat. Dá se tak v podstatě zcela skrýt, že jde o WB okno a HTML obsah.
<body oncontextmenu="return false" onmousedown="return false" onselectstart="return false" ondragstart="return false">
Ale co dělat, když to jsou cizí stránky nebo zkrátka nemůžeme ovlivnit, co bude zapsáno v HTML? Pak na formulář přidáme komponentu TApplicationEvents a naplníme událost OnMessage takto.
procedure TMainForm.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
begin
if (Msg.message=WM_RBUTTONDOWN) and IsChild(WebBrowser1.Handle, Msg.hwnd) then begin
Handled:=true;
end;
end;
Čeho se tím docílí? Pokud kliknu pravým tlačítkem nad WB, pak nastavím, že je událost obsloužena a dál ji nepustím. K WB se tedy požadavek na zobrazení kontextového menu nedostane.
Malá aplikace ukazující práci s WB je zdarma ke stažení.