[CLOSED] [Builder / Delphi] TWebBrowser - как?

Slavaga

Как известно, этот чудесный компонент (TWebBrowser или TCppWebBrowser) умеет отображать html страницы. Для отображения используется метод Navigate в который передается URL страницы.
Некоторая программа генерит отчеты в html-формате. Хотелось бы отображать эти отчеты без сохранения html-странички на диск. Можно ли как-нибудь подпихнуть этому компоненту например строку с отчетом, чтобы он его отобразил?

bleyman

Если он написан поверх интернет-эксплореровского активХ компонента, то, насколько мне известно, нет.
Пиши на диск, это несложно.
Хотя можешь и извратиться: эмулировать вебсервер, открытый на определённом порту, и коннектиться к нему, или попытаться как-нибудь хитроумно создать именнованный файл в памяти. Это всё намного более геморройно, имхо.

maggi14

> Если он написан поверх интернет-эксплореровского активХ компонента
так и есть.
А почему нельзя загрузить в документ пустую страничку и впихнуть туда через эктивикс-компонент содержимое планируемой страницы?

bleyman

А, так можно, сорри, забыл.
Но это тоже тот ещё геморрой, поскольку, если мне не изменяет память, впихивать придётся не чистый хтмл, а DOM.

Slavaga

Очень жаль =(
Файл не хочется использовать из соображений безопасности.
Насчет веб-сервера была мысль, но это сложный вариант. Хочется че-нить попроще.
Черех ActiveX надо работать с COM'ом - тоже лень возится , но наверное придется остановится на этом варианте.
Кстати, если делать с файлами - можно ли сделать так, чтобы программа создавала файл, писала в него html, открывала его браузером, а потом удаляла. И чтобы при всем при этом файл не был доступен на чтение остальным приложениям?
Все мои попытки приводили к тому, что либо файл всем доступен на чтение, либо браузер его не может открыть =\

Dasar

> Если он написан поверх интернет-эксплореровского активХ компонента, то, насколько мне известно, нет.
достаточно использовать интуитивно-понятную возможность:
Navigate2("about:"+htmltext, ...);

Dasar

да, и файл можно создавать как MemoryStream, а не на диске

Slavaga

достаточно использовать интуитивно-понятную возможность:
Navigate2("about:"+htmltext, ...);
100 пудово!
Тема закрыта.

bleyman

ухты!
Не знал, спасибо

bleyman

достаточно использовать интуитивно-понятную возможность
Кстати ни аффторы оперы, ни аффторы ФФ до этой интуитивно-понятной возможности не додумались
Мне тут рассказали кроссплатформенный способ:
javascript:'<h1>foo</h1>'

bobby

Если он написан поверх интернет-эксплореровского активХ компонента, то, насколько мне известно, нет.
В интернет-эксплореровский ActiveX очень даже просто загружать контент из строчки, это даже описано отдельной статьей в MSDN.
Года два назад я её долго искал, потом каким-то образом набрел на неё по ссылкам из левых источников. Сейчас попробую ещё разок найти.
Оставить комментарий
Имя или ник:
Комментарий: