Конференция "Сети" » TWebBrowser - организовать preview html-кода [D6, WinXP]
 
  • Real © (04.06.08 21:22) [0]
    Вот есть такая необходимость: юзер заполняет поле (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

    То ли я туплю, то ли статью надо с сайта убирать :) Надеюсь что я: уж очень хороший пример по краткости
  • Real © (06.06.08 02:21) [1]
    Гм, этот раздел никто не смотрит или никто не знает ответ? В потрепаловке наверное уже бы зафлудили основательно :)
  • clickmaker © (06.06.08 10:12) [2]
    а если так
    HtmlText := WideString(HTML);
  • Aokokty © (06.06.08 18:47) [3]
    У меня таже проблема, пробовал 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;

    Вобще то этот метод у меня тоже не работает, но возможно я его не правильно использую тк естествено поправил для своих нужд, если получится этот метод напиши плз свой вариант и используемые в юзес библиотеки
  • Real © (06.06.08 22:59) [4]

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

    Ничего не изменилось, те же глюки.
  • Real © (06.06.08 23:02) [5]

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

    Да, я тоже нашел этот пример (только ленивые не скопипэстили его на сайт связанный по тематике с Delphi :) и он у меня не работает по той причине, что моя делфи ничего не знает о IHTMLDocument2
  • Aokokty © (07.06.08 08:13) [6]
    В юзес пропиши 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... по этому и говорю что может у тебя получится, а у меня просто какой то косяк в проге...
 
Конференция "Сети" » TWebBrowser - организовать preview html-кода [D6, WinXP]
Есть новые Нет новых   [134432   +19][b:0][p:0]