Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.143.228.40] |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Сейчас я работаю над приложением, где необходим справочник, в котором будут показываться HTML-документы, подскажите, пожалуйста, хороший, бесплатный компонент для просмотра HTML-документов.
|
Сообщ.
#2
,
|
|
|
TWebBrowser - бесплатен по самое нехочу
|
Сообщ.
#3
,
|
|
|
Цитата Rouse_ @ TWebBrowser - бесплатен по самое нехочу Не устраивает тем, что не умеет читать данные из потока (Stream). У меня Html-документы будут храниться в базе данных, затем с помощью Sql-запроса помещается в DataSet, после чего мне нужно, чтобы эти данные отобразились в виде Html-документа. |
Сообщ.
#4
,
|
|
|
Цитата DelphiLexx @ Не устраивает тем, что не умеет читать данные из потока (Stream). Это ты просто не умеешь в него писать из потока Ищи примеры в FAQ. |
Сообщ.
#5
,
|
|
|
ThtmlLite. У него есть LoadFromStream.
|
Сообщ.
#6
,
|
|
|
Цитата Rouse_ @ Это ты просто не умеешь в него писать из потока Ищи примеры в FAQ. Нашел 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; procedure TForm1.Button1Click(Sender: TObject); begin WB_LoadHTML(WebBrowser1,'SwissDelphiCenter'); end; Но есть одна проблема, у меня в ms - будет храниться Html-код, после исполнения кода указанного выше, TWebBrowser - отображает не саму страницу (толькл информационный текст), а Html-код, т.е. тэги, информационный текст и прочую фигню. Как быть? |
Сообщ.
#7
,
|
|
|
var Document: IHtmlDocument2; V: Variant; ... WebBrowser2.Navigate('about:blank'); while WebBrowser2.Document = nil do Application.ProcessMessages; Document := WebBrowser2.Document as IHtmlDocument2; V := VarArrayCreate([0, 0], varVariant); V[0] := HTMLCode; Document.Writeln(PSafeArray(TVarData(v).VArray)); end; |
Сообщ.
#8
,
|
|
|
Делай тупо
var V: OleVariant; HtmlDoc: IHTMLDocument2; begin WB.Navigate('about:blank'); OleCheck(WB.Document.QueryInterface(IHTMLDocument2, HtmlDoc)); V := VarArrayCreate([0, 0], varVariant); V[0] := ppText.Content; //строка HtmlDoc.write(PSafeArray(TVarData(V).VArray)); HtmlDoc.close; Добавлено Розыч, close в конце не помешает |
Сообщ.
#9
,
|
|
|
Цитата Romkin @ Розыч, close в конце не помешает Я когда даю демки, обычно на такое не смотрю - должен же вопрошающий сам над чем нибудь поразмыслить |
Сообщ.
#10
,
|
|
|
Цитата Romkin @ Делай тупо var V: OleVariant; HtmlDoc: IHTMLDocument2; begin WB.Navigate('about:blank'); OleCheck(WB.Document.QueryInterface(IHTMLDocument2, HtmlDoc)); V := VarArrayCreate([0, 0], varVariant); V[0] := ppText.Content; //строка HtmlDoc.write(PSafeArray(TVarData(V).VArray)); HtmlDoc.close; Так мне же нужно через поток |
Сообщ.
#11
,
|
|
|
Цитата DelphiLexx @ У меня Html-документы будут храниться в базе данных, затем с помощью Sql-запроса помещается в DataSet, после чего мне нужно, чтобы эти данные отобразились в виде Html-документа. Вопрос на засыпку: Есть ли у TField метод AsString?! |
Сообщ.
#12
,
|
|
|
Используй TStringStream - будет тебе поток, легко трансформируемый в строку
|
Сообщ.
#13
,
|
|
|
Цитата Romkin @ Вопрос на засыпку: Есть ли у TField метод AsString?! Есть. Добавлено А как узнать, пустой ли докумет или нет? |
Сообщ.
#14
,
|
|
|
А если есть, ничего не мешает писать V[0] := MyField.asString;
Цитата DelphiLexx @ А как узнать, пустой ли докумет или нет? В где? |
Сообщ.
#15
,
|
|
|
Цитата Romkin @ В где? В TWebBrowser'e. 1. Мне это нужно, для следующих целей, если документ пустой, т.е. если загружен html - который не содержит информационного текста, тогда я блокирую кнопку очистить (она очищает содержимое документа TWebBrowser'a). Кстати, умеет ли TWebBrowser очищать документ, если ли у него такой метод? 2. Как сохранить исходник TWebBrowser.Document'a в TStringStream, я так понимаю вот так: ts := TStringStream.Create; try ((WebBrowser.Document as IHTMLDocument2) as IPersistStreamInit).Save(TStreamAdapter.Create(ts), 'вот здесь что ставить?') ... finally ts.Free; end; |