Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2010, 00:52   #1
пауэрлифтинг
Заблокирован
 
Регистрация: 11.12.2009
Сообщений: 133
По умолчанию задать html текст в webbrowser

как установить свой хтмл текст в webbrowser для просмотра
пауэрлифтинг вне форума Ответить с цитированием
Старый 25.04.2010, 01:25   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,814
По умолчанию

Один из вариантов - открыть его из файла.
Arigato вне форума Ответить с цитированием
Старый 25.04.2010, 01:46   #3
пауэрлифтинг
Заблокирован
 
Регистрация: 11.12.2009
Сообщений: 133
По умолчанию

нашел в интернете ответ но он у меня не работает
Цитата:
Вопрос: Как загрузить строковые данные в 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(TVarD ata(v).VArray));
HTMLDocument.Close;

...
end;

...
пауэрлифтинг вне форума Ответить с цитированием
Старый 25.04.2010, 02:12   #4
пауэрлифтинг
Заблокирован
 
Регистрация: 11.12.2009
Сообщений: 133
По умолчанию

нашел рабочею процедуру:
Код:
procedure TextToWebBrowser(Text: string; var WB: TWebBrowser);
var
  Document: IHTMLDocument2;
  V: OleVariant;
begin
  // Документ необходимо создать только один раз за текущую сессию работы
  if WB.Document = nil then
    WB.Navigate('about:blank');
  // Ожидаем создания документа и позволяем обрабатывать все сообщения
  while WB.Document = nil do
    Application.ProcessMessages;
  Document := WB.Document as IHtmlDocument2;
  // Вставляем текст (до 2Гб)
  {следующие строчки внесены недавно - старый вариант функции не работал под XP}
  V := VarArrayCreate([0, 0], varVariant);
  V[0] := Text;
  Document.Write(PSafeArray(TVarData(v).VArray));
  Document.Close;
end;
пауэрлифтинг вне форума Ответить с цитированием
Старый 21.05.2011, 09:46   #5
Vahmur
 
Регистрация: 11.09.2008
Сообщений: 5
По умолчанию

Цитата:
Сообщение от пауэрлифтинг Посмотреть сообщение
нашел рабочею процедуру:
Код:
procedure TextToWebBrowser(Text: string; var WB: TWebBrowser);
var
  Document: IHTMLDocument2;
  V: OleVariant;
begin
  // Документ необходимо создать только один раз за текущую сессию работы
  if WB.Document = nil then
    WB.Navigate('about:blank');
  // Ожидаем создания документа и позволяем обрабатывать все сообщения
  while WB.Document = nil do
    Application.ProcessMessages;
  Document := WB.Document as IHtmlDocument2;
  // Вставляем текст (до 2Гб)
  {следующие строчки внесены недавно - старый вариант функции не работал под XP}
  V := VarArrayCreate([0, 0], varVariant);
  V[0] := Text;
  Document.Write(PSafeArray(TVarData(v).VArray));
  Document.Close;
end;
У меня так не компилируется, подчёркивает строку
Код:
Document := WB.Document as IHtmlDocument2;
Но если её заменить на
Код:
Document := WebBrowser1.Document as IHTMLDocument2;
, то компиляция проходит успешно, правда всё-равно програмка при попытке запуска пишет ошибку в строке
Код:
Document.Write(PSafeArray(TVarData(v).VArray));
Vahmur вне форума Ответить с цитированием
Старый 21.05.2011, 16:22   #6
apromix
PHP, Delphi
Форумчанин
 
Аватар для apromix
 
Регистрация: 07.05.2008
Сообщений: 388
По умолчанию

WebBrowser1.Navigate('about:blank') ; лучше вынеси в FormCreate

А остальное сократи до:

Код:
  Document := WebBrowser1.Document as IHtmlDocument2;
  V := VarArrayCreate([0, 0], varVariant);
  V[0] := 'Текст';
  Document.Write(PSafeArray(TVarData(v).VArray));
  Document.Close;
И не забудь подключить требуемые модули в uses, как ShellAPI, Mshtml, ActiveX, OleCtrls, SHDocVw и др.
Мыши плакали, кололись, но продолжали жрать кактус...
мои проекты
apromix вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как задать время в ячейку, а не в текст макроса? zander Microsoft Office Excel 2 11.08.2009 10:44
WebBrowser HTML в файл. Witold Компоненты Delphi 14 23.06.2009 15:00
Как задать действие формы HTML-страницы? C# Alexei_1986 PHP 7 27.05.2009 20:34
Webbrowser + HTML + css GAGARIN-NEW Компоненты Delphi 9 17.10.2008 01:15
Как задать текст в Edit в чужом окне Artem Win Api 6 14.12.2007 19:13