-
Вот есть такая необходимость: юзер заполняет поле (TMemo) текстом для сохранения в БД. Далее, этот текст будет доступен пользователям на сайте. То есть, при вводе разрешается использовать html-теги. Перед сохранением, заполняющий хочет увидеть превью своего текста. Нашел замечательный пример на сайте ДМ: http://delphimaster.ru/articles/twebbrowser.htmlЭто работает, но с "некоторыми" недостатками: текст превышающий X символов игнорируется. Иногда - получаю ошибку "невозможно отобразить" страницу, иногда текст не обновляется, а выдается какая-то предыдущая версия. Все эти глюки - именно при тексте более X (под текстом в данном случае я понимаю значение параметра с кодом html, вместе с автоматически вставляемым <html> и </html>) Здесь X - переменная величина, т.к. на проекте где нужно было внедрить эту фичу рубился текст более 339 символов, а на тестовом проекте для проверки этого бага - значение было 299 В режиме отладки, переменная в которой должен находиться текст из мемо - содержит просто какой-то мусор. Ниже две ссылки: на тестовый проект, где можно увидеть этот глюк и на скриншот где видно содержимое переменной (в режиме отладки) Разумеется, ничего подобного в мемо на тот момент не было: там был обычный текст http://www.azlab.org/download/delphi/twebbrowser.rarhttp://www.azlab.org/download/delphi/wb_bug.jpgТо ли я туплю, то ли статью надо с сайта убирать :) Надеюсь что я: уж очень хороший пример по краткости
-
Гм, этот раздел никто не смотрит или никто не знает ответ? В потрепаловке наверное уже бы зафлудили основательно :)
-
а если так HtmlText := WideString(HTML);
-
У меня таже проблема, пробовал 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; Вобще то этот метод у меня тоже не работает, но возможно я его не правильно использую тк естествено поправил для своих нужд, если получится этот метод напиши плз свой вариант и используемые в юзес библиотеки
-
> а если так > HtmlText := WideString(HTML);
Ничего не изменилось, те же глюки.
-
> нашел на сайте http://www.sources.ru вот это:
Да, я тоже нашел этот пример (только ленивые не скопипэстили его на сайт связанный по тематике с Delphi :) и он у меня не работает по той причине, что моя делфи ничего не знает о IHTMLDocument2
-
В юзес пропиши 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... по этому и говорю что может у тебя получится, а у меня просто какой то косяк в проге...
|