深圳全飞鸿

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 492|回复: 0
打印 上一主题 下一主题

delphi显示Html内容快速稳定版

[复制链接]

800

主题

1379

帖子

7704

积分

版主

Rank: 7Rank: 7Rank: 7

积分
7704
跳转到指定楼层
楼主
发表于 2020-5-31 18:03:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式



测试以下:



unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, OleCtrls, SHDocVw, ActiveX, mshtml, ExtCtrls;

type
  TForm1 = class(TForm)
    WebBrowser1: TWebBrowser;
    Button2: TButton;
    Timer1: TTimer;
    Label1: TLabel;
    procedure Button2Click(Sender: TObject);
    procedure WebBrowser1DocumentComplete(Sender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);
    procedure FormShow(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}



procedure LoadStream(WebBrowser:TWebBrowser; Stream:TStream);
var
  PersistStreamInit: IPersistStreamInit;
  StreamAdapter: IStream;
  MemoryStream: TMemoryStream;
begin
  WebBrowser.Navigate('about:blank');
  repeat
    Application.ProcessMessages;
    Sleep(0);
  until WebBrowser.ReadyState=READYSTATE_COMPLETE;
  if WebBrowser.Document.QueryInterface(IPersistStreamInit,PersistStreamInit)=S_OK then
  begin
    if PersistStreamInit.InitNew=S_OK then
    begin
      MemoryStream:=TMemoryStream.Create;
      try
        MemoryStream.CopyFrom(Stream,0);
        MemoryStream.Position:=0;
      except
        MemoryStream.Free;
        raise;
      end;
      StreamAdapter:=TStreamAdapter.Create(MemoryStream,soOwned);
      PersistStreamInit.Load(StreamAdapter);
    end;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  S: TStringStream;
begin
  S:= TStringStream.Create('<html  >  <body    bgcolor=  "#E0FFFF"  >'+ inttostr(gettickcount)+'  </html>  ');
  try
    LoadStream(WebBrowser1,S);
  finally
    S.Free;
  end;
end;


function ColorToWebColorStr(Color: TColor): string;
var
  RGB: Integer;
begin
  RGB := ColorToRGB(Color);
  Result :=
    UpperCase(Format('#%.2x%.2x%.2x', [Byte(RGB), Byte(RGB shr 8), Byte(RGB shr 16)]));
end;

procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
   IHtmlDocument2(WebBrowser1.Document).body.style.background :=
    ColorToWebColorStr(rgb(224,255,255));
end;

procedure TForm1.FormShow(Sender: TObject);
begin
   self.Button2Click(nil);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
   self.Button2Click(nil);
   self.Timer1.Tag:=self.Timer1.Tag+1;
   label1.Caption:=inttostr(self.Timer1.Tag);
end;

Initialization
  OleInitialize(nil);

finalization
  try
    OleUninitialize;
  except
  end;

end.

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|nagomes  

GMT+8, 2025-5-5 01:40 , Processed in 0.023160 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表