如何在THTMLViewer中显示图像?

时间:2010-11-17 08:52:59

标签: html delphi

HFText是一个字符串,而HTMLViewer1是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显示图片?

2 个答案:

答案 0 :(得分: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 get出现问题,我只会释放流。

HTH。

答案 1 :(得分:0)

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

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

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

下一步...如果您使用文件引用而不是http:?它是否有效?