Это можно сделать, загрузив страницу по умолчанию при создании формы (Быстрый способ):
function ColorToHTML(const Color: TColor): string;
var
ColorRGB: Integer;
begin
ColorRGB := ColorToRGB(Color);
Result := Format('#%0.2X%0.2X%0.2X',
[GetRValue(ColorRGB), GetGValue(ColorRGB), GetBValue(ColorRGB)]);
end;
WebBrowser1.Navigate(Format('about:<body bgcolor="%s" style="overflow:hidden"/>', [ColorToHTML(clRed)]));
Или более распространенный способ (TWebBrowser
/ TEmbeddedWB
):
uses ActiveX, MSHTML;
procedure LoadDocFromString(ABrowser: TWebBrowser; const HTMLString: WideString);
var
v: OleVariant;
HTMLDocument: IHTMLDocument2;
begin
if not Assigned(ABrowser.Document) then
begin
ABrowser.Navigate('about:blank');
while ABrowser.ReadyState <> READYSTATE_COMPLETE do
Application.ProcessMessages;
end;
HTMLDocument := ABrowser.Document as IHTMLDocument2;
v := VarArrayCreate([0, 0], varVariant);
v[0] := HTMLString;
HTMLDocument.Write(PSafeArray(TVarData(v).VArray));
HTMLDocument.Close;
end;
LoadDocFromString(WebBrowser1, Format('<body style="background-color:%s; scrollbar-base-color:%s;"/>',
[ColorToHTML(clGray), ColorToHTML(clBlack)]));
TEmbeddedWB
специфично:
EmbeddedWB1.LoadFromString(Format('<body style="background-color:%s; scrollbar-base-color:%s;"/>',
[ColorToHTML(clGray), ColorToHTML(clBlack)]));
Редактировать: Взгляните на этот урок: Как настроить пользовательский интерфейс TWebBrowser .
Здесь объясняется, как настроить WB с помощью IOleClientSite
и IDocHostUIHandler
, которые также предоставляют CSS по умолчанию для самого объекта браузера .
Мы можем динамически создать таблицу стилей, которая знает о цвете и шрифтах формы, и указать браузеру использовать ее (посмотрите на результат в части 5 из 6).
Поскольку TEmbeddedWB
реализует IDocHostUIHandler
, вы можете использовать его свойство HostCSS
(вам все равно нужно загрузить пустой документ):
procedure TForm1.Button1Click(Sender: TObject);
const
// Template for default CSS style
cCSSTplt = 'body {background-color: %0:s}';
var
FmtCSS: string; // Stores default CSS
begin
FmtCSS := Format(cCSSTplt, [ColorToHTML(clYellow)]);
EmbeddedWB1.HostCSS := FmtCSS;
EmbeddedWB1.AssignEmptyDocument;
end;
Обратите внимание, что использование свойства HostCSS
с шаблоном стиля CSS будет использовать этот шаблон также для страниц без CSS-стиля.