Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TWebBrowser - организовать preview html-кода [D6, WinXP]


Real ©   (2008-06-04 21:22:00) 

Вот есть такая необходимость: юзер заполняет поле (TMemo) текстом для сохранения в БД. Далее, этот текст будет доступен пользователям на сайте. То есть, при вводе разрешается использовать html-теги. Перед сохранением, заполняющий хочет увидеть превью своего текста. Нашел замечательный пример на сайте ДМ:

http://delphimaster.ru/articles/twebbrowser.html

Это работает, но с "некоторыми" недостатками: текст превышающий X символов игнорируется. Иногда - получаю ошибку "невозможно отобразить" страницу, иногда текст не обновляется, а выдается какая-то предыдущая версия. Все эти глюки - именно при тексте более X (под текстом в данном случае я понимаю значение параметра с кодом html, вместе с автоматически вставляемым <html> и </html>)

Здесь X - переменная величина, т.к. на проекте где нужно было внедрить эту фичу рубился текст более 339 символов, а на тестовом проекте для проверки этого бага - значение было 299

В режиме отладки, переменная в которой должен находиться текст из мемо - содержит просто какой-то мусор. Ниже две ссылки: на тестовый проект, где можно увидеть этот глюк и на скриншот где видно содержимое переменной (в режиме отладки) Разумеется, ничего подобного в мемо на тот момент не было: там был обычный текст

http://www.azlab.org/download/delphi/twebbrowser.rar
http://www.azlab.org/download/delphi/wb_bug.jpg

То ли я туплю, то ли статью надо с сайта убирать :) Надеюсь что я: уж очень хороший пример по краткости


Aokokty   (2008-06-07 08:13:00) [1]

В юзес пропиши mshtml, должна узнать :), а вообще я использовал эти библиотеки:
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, DB, ADODB, StdCtrls, DBCtrls, ExtCtrls, ComCtrls, HTTPApp,
 HTTPProd, CompProd, PagItems, MidProd, OleCtrls, SHDocVw, mshtml, ActiveX, ComObj;

хотя наверно и лишнего поприкручивал, но что такое IHTMLDocument2 Дельфи узнала, а ошибку выдает Access violation in adress... по этому и говорю что может у тебя получится, а у меня просто какой то косяк в проге...


Real   (2008-06-06 23:02:00) [2]


> нашел на сайте http://www.sources.ruвот это:

Да, я тоже нашел этот пример (только ленивые не скопипэстили его на сайт связанный по тематике с Delphi :) и он у меня не работает по той причине, что моя делфи ничего не знает о IHTMLDocument2


Real   (2008-06-06 22:59:00) [3]


> а если так
> HtmlText := WideString(HTML);

Ничего не изменилось, те же глюки.


Aokokty   (2008-06-06 18:47:00) [4]

У меня таже проблема, пробовал http://delphimaster.ru/articles/twebbrowser.htmlвот эту штуку и та же ошибка, но нашел на сайте http://www.sources.ruвот это:

Вопрос: Как загрузить строковые данные в WebBrowser не прибегая к открытию файла?

Ответ: Загрузите строку массив Variant, а затем запишите в документ (Document):

...

var
 v: Variant;
 HTMLDocument: IHTMLDocument2;  
begin
 HTMLDocument := WebBrowser1.Document as IHTMLDocument2;
 v := VarArrayCreate([0, 0], varVariant);
 v[0] := HTMLString; // Это Ваша HTML строка
 HTMLDocument.Write(PSafeArray(TVarData(v).VArray));
 HTMLDocument.Close;

 ...
end;

Вобще то этот метод у меня тоже не работает, но возможно я его не правильно использую тк естествено поправил для своих нужд, если получится этот метод напиши плз свой вариант и используемые в юзес библиотеки


clickmaker   (2008-06-06 10:12:00) [5]

а если так
HtmlText := WideString(HTML);


Real   (2008-06-06 02:21:00) [6]

Гм, этот раздел никто не смотрит или никто не знает ответ? В потрепаловке наверное уже бы зафлудили основательно :)


Наверх

Титульная страница Поиск, карта сайта Написать письмо