2016-05-17 116 views
0

我正在使用TChromium导航到页面。它具有Options.ImageLoading属性,您可以在其中指定是否要显示网站的图像。Delphi TChromium:如何在显示和隐藏图像之间切换Options.ImageLoading

问题是否只有在设计时设置了选项才有效。如果我在运行时更改此属性,它不起作用。这是一个示例代码;在这个例子中,我想实现的是打开test1.com显示图像并打开test2.com隐藏图像。不幸的是,这两个网站都加载了图片,忽略了我设置的选项。

任何想法如何解决这个问题?我想只能为某些网站显示图片。

procedure tform1.button1click(Sender : TObject); 
begin 
chromium1.options.ImageLoading = STATE_ENABLED; 
chromium1.load('www.test1.com'); 
end; 

procedure tform1.button2click(Sender: TObject); 
begin 
chromium1.options.ImageLoading = STATE_DISABLED; 
chromium1.load('www.test2.com'); 
end; 
+1

CEF的浏览器设置不能动态更改。浏览器/控件的重新创建应该有所帮助。 – fddima

+0

@fddima这是坏消息:(当我使用TWebbrowser时,我可以动态地... – delphirules

+0

我不知道TWebBrowser是什么,因为你无论如何重新加载页面 - 重新创建浏览器是最简单的方式没有任何缺点。动态地,你甚至可以通过正确的等待和显示/隐藏窗口来避免闪烁,所以不是一个坏消息 – fddima

回答

1

试试这个:

  • 创建TChromium的两个实例,一个与options.ImageLoading := STATE_ENABLED和其他与options.ImageLoading := STATE_DISABLED

  • 然后,当你想要一个页面加载,使第一一个可见,另一个不可见,反之亦然。

很明显,有可能是有点超过,这样做,但至少它会避免你想改变每次重新浏览器。

+0

感谢您的建议。虽然它不能真正解决我的问题,但这是一种解决方法。 – delphirules

1

因为@delphirules居然问递延图片加载,而旁边的答案是伟大的(并且适用于任何基于铬的解决方案)我是重新发布part of this answer这里:

可以加载一个网页与webkit.webprefs.loads_images_automatically首选项设置为false,然后将其更改为true,图像将加载(加载后无法卸载图像)。

感谢用户amaitland的优秀发现。 :)

+0

谢谢,这是个好消息。我只是不知道如何在我使用的组件中设置它,这是一个Delphi绑定... – delphirules