加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – TEmbeddedWB和背景颜色

发布时间:2020-12-15 09:08:38 所属栏目:大数据 来源:网络整理
导读:如何在不显示任何页面时更改 TEmbeddedWB组件的defult backgound颜色(clWhite)? 解决方法 这可以通过在创建表单时加载默认页面来完成(快速方式): function ColorToHTML(const Color: TColor): string;var ColorRGB: Integer;begin ColorRGB := ColorToRGB(
如何在不显示任何页面时更改 TEmbeddedWB组件的defult backgound颜色(clWhite)?

解决方法

这可以通过在创建表单时加载默认页面来完成(快速方式):

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(clBlack)]));

编辑:看一下本教程:How to customise the TWebBrowser user interface.
这解释了如何使用IOleClientSite和IDocHostUIHandler自定义WB,它还为浏览器对象本身提供默认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;

请注意,使用带有CSS样式模板的HostCSS属性也将使用此模板用于没有CSS样式的页面.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读