How to customise the TWebBrowser user interface (part 6 of 6)
Demo code to accompany this article is available for download (see below). The demo includes the following:
Two applications –
WBUIArtDemo2.exe– that include Delphi code for stages 1 and 2 of the sample application.
Separate units containing the nul and custom container classes –
IntfDocHostUIHandler.pasthat contains the declaration of IDocHostUIHandler, associated structures and all the DOCHOSTUIFLAG_ flags.
This code has been tested with Delphi 7, 2006 and 2010 on Windows XP Pro and Internet Explorer 6 and on Windows Vista Home Premium with Internet Explorer 8.
IntfDocHostUIHandler.pasis licensed under the MPL / GPL / LGPL tri-license and other code can be re-used as required. See the source files for full details. If you agree to all this then please download the code using the following link.
In this article we have investigated how to customize the appearance of a TWebBrowser control.
We noted that we can control the appearance and behaviour of TWebBrowser by developing a container object that implements the IDocHostUIHandler interface. In order for the browser control to find the IDocHostUIHandler implementation we also needed to implement IOleClientSite.
We first created a reusable, "do nothing" container class that provided a minimal implementation of the required interfaces. Then we derived a custom class from the "do nothing" container that provided the required customization. We also exposed properties to enable users to manipulate the browser's appearance and behaviour. Finally we developed a sample application to exercise the customizable container.
A downloadable demo program was made available that includes all the code discussed in the article.
Several references from MSDN were used in researching this article. They are:
I hope you enjoyed this article and found it useful. If you have any observations, comments or have found any errors please contact me.
This article is copyright © Peter Johnson 2004-2013
Licensed under a Creative Commons License.