|
测试以下:
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.
|
|