Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Подскажите, хороший, компонент для просмотра HTML


Автор: Delphist 12.9.2007, 14:27
Сейчас я работаю над приложением, где необходим справочник, в котором будут показываться HTML-документы, подскажите, пожалуйста, хороший, бесплатный компонент для просмотра HTML-документов. 

Автор: W4FhLF 12.9.2007, 15:00
TWebBrowser

Автор: MetalFan 12.9.2007, 20:31
или более продвинутый собрат - TEmbeddedWB

Автор: Poseidon 13.9.2007, 13:00
Цитата(W4FhLF @  12.9.2007,  15:00 Найти цитируемый пост)
TWebBrowser
Хотелось бы заметить, что TWebBrowser на прямую завязан с Internet Explorer. И если (теоретически возможно) у пользователя IE удален, то TWebBrowser работать откажется. Да и уязвимости, присетствующие в IE, так же перекачуют в программу, пока их не пофиксят.

Автор: Alexeis 13.9.2007, 13:31
С другой стороны, ведь FF не предоставляет интерфейс своего браузера, для возможности его встраивания в свое ПО, а писать свой браузер дело весьма непростое...

Добавлено через 6 минут и 26 секунд
  Ух ты! Как же я был неправ, таки предоставляет ActiveX! И люди уже юзают мозилу вместо IE!
http://www.paranoia.clara.net/articles/taming_the_lizard_with_delphi.html

Автор: Delphist 13.9.2007, 13:55
Цитата(W4FhLF @  12.9.2007,  16:00 Найти цитируемый пост)
TWebBrowser 

Нашел
Код

uses 
ActiveX; 

procedure WB_LoadHTML(WebBrowser: TWebBrowser; HTMLCode: string); 
var 
sl: TStringList; 
ms: TMemoryStream; 
begin 

WebBrowser.Navigate('about:blank'); 
while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do 
  Application.ProcessMessages; 
if Assigned(WebBrowser.Document) then 
begin 
   sl := TStringList.Create; 
   try 
     ms := TMemoryStream.Create; 
     try 
       sl.Text := HTMLCode; 
       sl.SaveToStream(ms); 
       ms.Seek(0, 0); 
       (WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms)); 
     finally 
       ms.Free; 
     end; 
   finally 
     sl.Free; 
   end; 
end; 
end; 

Но есть одна проблема, у меня в ms - будет храниться Html-код, после исполнения кода указанного выше, TWebBrowser - отображает не саму страницу (толькл информационный текст), а Html-код, т.е. тэги, информационный текст и прочую фигню. Как сделать так чтобы из потока Html-кода формировалась нормальная страница? 

Автор: Snowy 13.9.2007, 14:09
Так сформируй нормальный html - с заголовком и т.д.

Добавлено через 43 секунды
Хотя и без заголовка нормально работает:
Код
procedure LoadHtml(wb: TWebBrowser; html: string);
var ms: TMemoryStream;
begin
  ms:=TMemoryStream.Create;
  ms.Write(html[1], Length(html));
  ms.Position:=0;
  try
    while wb.ReadyState < READYSTATE_INTERACTIVE do
      Application.HandleMessage;
    (wb.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms));
  finally
    ms.Free;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  wb1.Navigate('about:blank');
end;

procedure TForm1.btn1Click(Sender: TObject);
begin
  LoadHtml(wb1, '<h1>Hello World!</h1>');
end;

Автор: Delphist 13.9.2007, 14:32
Цитата(Snowy @  13.9.2007,  15:09 Найти цитируемый пост)
Хотя и без заголовка нормально работает:

У меня не работает вот мой Html-код, который хранится в ms: TMemoryStream

Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- saved from url=(0057)http://www.meat-club.ru/forum/printview.php?t=603&start=0 -->
<!-- DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" -->
<HTML 
dir=ltr><HEAD><TITLE>Çàãîëîâîê</TITLE>
<META http-equiv=Content-Type content="text/html; charset=windows-1251">
<META http-equiv=Content-Style-Type content=text/css>
<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY><SPAN class=Forum>
<BR>мой текст<BR>
<HR>
</BODY></HTML>


Эта же фигня (с тегами) отображает в TWebBrowser. А нужно без тэгов.
Правда, если убать вот это, то все работает нормально
Код

<!-- saved from url=(0057)http://www.meat-club.ru/forum/printview.php?t=603&start=0 -->   <!-- DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" -->


Автор: Rrader 17.9.2007, 17:57
Лучший, нативный, бесплатный VCL браузер можно взять здесь
http://pbear.com/htmlviewers.html
http://pbear.com/htmllite771setup.exe

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)