2010-11-17 92 views
1

HFText是一个字符串,而HTMLViewer1是THTMLviewer。如何在THTMLViewer中显示图像?

HFText:= '<html><head><style>'+ 
       'body {font: Arial 8pt;}'+ 
       '</style></head>'+ 
       '<body marginwidth="0">'+ 
       '<img src="http://10.0.0.20/picture/1.jpg" />'+ 
       '</body></html>'; 

    HTMLViewer1.LoadFromString(HFText); 

此输出显示感叹号(不是我想要显示的图片)。 我被告知使用OnImageRequest,但我找不到示例来告诉我该怎么做。我如何使用OnImageRequest来显示图片?

回答

4

HTMLViewer有几种不同的处理图像的方法。

最简单的就是设置一个OnImageRequest处理程序,并如下面的代码使用的东西:

procedure TForm1.HTMLViewer1ImageRequest(Sender: TObject; 
    const SRC: string; var Stream: TMemoryStream); 
var 
    wStrm : TMemoryStream; 
begin 
    wStrm := TMemoryStream.create; 
    try 
    IdHTTP1.Get(Src, wStrm); 
    Stream := wStrm; 
    except 
    wStrm.free; 
    Stream := Nil; 
    end; 
end; 

上面的代码假设您已经在窗体上IdHTTP1组件用于获取的东西,或者您也可以从加载TFileStream的。

在您的示例中,SRC的值为“http://10.0.0.20/picture/1.jpg”。

您不释放创建的流,HTMLViewer会为您处理。如果HTTP获取出现问题,我只能释放流。

HTH。

+0

完美地工作。谢谢。 :) – Dian 2010-11-18 04:42:03

0

这里没有答案,但这里是我如何解决问题,看看你是否犯了一个基本的错误。

首先,验证当您在浏览器中输入此URL时,您将获得图像。 http://10.0.0.20/picture/1.jpg 到目前为止这么好?

接下来,用你的字符串的内容创建一个文件test.htm。双击以在您的浏览器中启动。还好?

Next ...如果您使用文件引用而不是http :?