Delphi 如何更改TChromium组件的默认背景色?

Delphi 如何更改TChromium组件的默认背景色?,delphi,background,delphi-xe,background-color,tchromium,Delphi,Background,Delphi Xe,Background Color,Tchromium,我用。我分配AWebPageAsString,这是一个灰色背景的静态HTML页面 FBrowser := TChromium.Create(pnlHolder); FBrowser.Visible := false; FBrowser.Parent := TWinControl(pnlHolder); FBrowser.Align := alClient; FBrowser.OnBeforeBrowse := BrowserBeforeBrowse; FBrowser.HandleNeeded;

我用。我分配
AWebPageAsString
,这是一个灰色背景的静态HTML页面

FBrowser := TChromium.Create(pnlHolder);
FBrowser.Visible := false;
FBrowser.Parent := TWinControl(pnlHolder);
FBrowser.Align := alClient;
FBrowser.OnBeforeBrowse := BrowserBeforeBrowse;
FBrowser.HandleNeeded;
FBrowser.FontOptions.RemoteFontsDisabled := true;
FBrowser.Browser.MainFrame.LoadString(AWebPageAsString, 'navigate:webpage');
当我启动应用程序时,它首先以白色背景和空内容显示,然后我的页面以灰色背景和实际内容显示


有没有办法避免这种情况?也许有一个默认的背景色?

我知道答案很晚,但这至少是一个有趣的话题。要更改默认浏览器的背景色,可以使用自定义样式表。这听起来不错,但它有一个很大的缺点-当您导航到一个没有定义样式表的页面时,您的自定义样式表将被应用。但是,如果您知道您将以某种样式浏览(例如)您的页面,这甚至可能是一种优势,因为这样您就可以保留在该默认自定义样式中定义的样式定义

因此,要创建黑色背景的浏览器(使用下面描述的样式),可以使用以下代码:

procedure TForm1.FormCreate(Sender: TObject);
const
  CSSHeader = 'data:text/css;charset=utf-8;base64,';
  CSSBase64 = 'Ym9keSB7YmFja2dyb3VuZC1jb2xvcjpibGFjazt9';
begin
  Chromium1.UserStyleSheetLocation := CSSHeader + CSSBase64;
  Chromium1.Options.UserStyleSheetEnabled := True;
  Chromium1.ReCreateBrowser('about:blank');
end;
上述代码中使用的
CSSBase64
常量为以下样式表:


为什么不在浏览器隐藏的情况下加载页面,并且只在加载完成后才显示它呢?可能是因为Chrome引擎就是这样做的。当我将Chrome浏览器最小化一段时间后,将其还原并导航到另一个选项卡时,它会以完全白色的背景显示,并且在显示页面之前不会显示任何内容。“为什么不隐藏浏览器加载页面,并且只在加载完成后才显示它?”-使用可见性属性和OnLoadEnd尝试了这种方法,但行为仍然相同。尝试了1。默认情况下使浏览器不可见2。已处理OnLoadStart并使FBrowser.Visible:=true;不幸的是,OnLoadStart甚至没有被炒鱿鱼。它的工作方式很有魅力。我只用了两年时间就实现了它。:)
body {background-color:black;}