Статья начинается с примечания! Процедуры
WebBrowserAbout1 и WebBrowserAbout2 работают одинаково,
в дальнейшем будем их обозначать WebBrowserAbout (без цифры в
наименовании). Процедуры WebBrowserText1 и WebBrowserText2
также работают одинаково, в дальнейшем будем их обозначать
WebBrowserText . Это связано с тем, что в некоторых версиях Delphi
какая-нибудь из данных процедур соответственно может и не работать. Поэтому в этой
статье публикуются различные версии процедур.
Процедура WebBrowserAbout вызывается только 1 раз! Рекомендуется ее
вызывать при запуске программы, например, в событии FormCreate .
Содержимое компонента типа TWebBrowser можно изменять многократно,
что для этого используется процедура WebBrowserText – можно
вызывать сколько угодно раз.
uses ActiveX, SHDocVw, MSHTML, Variants;
procedure WebBrowserAbout1(var WebBrowser: TWebBrowser);
var OLEHtmlText: OLEVariant;
begin
OLEHtmlText:='about:';
WebBrowser.Navigate2(OLEHtmlText);
end;
procedure WebBrowserAbout2(var WebBrowser: TWebBrowser);
begin
WebBrowser.Navigate('about:');
end;
procedure WebBrowserText1(var WebBrowser: TWebBrowser; HTMLText: string);
var sl: TStringList;
ms: TStream;
begin
if Assigned(WebBrowser.Document) then
begin
sl:=TStringList.Create;
ms:=TMemoryStream.Create;
sl.Text:=HTMLText;
sl.SaveToStream(ms);
ms.Seek(0, 0);
(WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms));
FreeAndNil(ms);
FreeAndNil(sl);
end;
end;
procedure WebBrowserText2(var WebBrowser: TWebBrowser; HTMLText: string);
var Document: IHTMLDocument2;
V: OleVariant;
begin
Document:=WebBrowser.Document as IHtmlDocument2;
V:=VarArrayCreate([0, 0], varVariant);
V[0]:=HTMLText;
Document.write(PSafeArray(TVarData(V).VArray));
Document.close;
end;
На форму добавляем компонент WebBrowser1 , кнопку Button1
и пишем простейший программный код, указанный ниже. Кстати, объект типа
TWebBrowser находится на вкладке "Internet".
procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowserAbout1(WebBrowser1);
end;
procedure TForm1.Button1Click(Sender: TObject);
const HTML = '<style>'+
'h1{'+
' border: 1px solid green;'+
' border-radius: 20px;'+
' color: red;'+
' text-align: center;'+
'}'+
'</style>'+
'<h1>Привет!</h1>';
var s: string;
begin
s:=FormatDateTime('dd.mm.yyyy hh:nn:ss', Now);
s:=Format('Date / Time: <b>%s</b>', [s]);
WebBrowserText1(WebBrowser1, HTML+s);
end;
|