Модераторы: MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Использовать css в webbrowser, не получается использовать css 
:(
    Опции темы
fireofdeath
Дата 5.4.2011, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 21.6.2010

Репутация: нет
Всего: нет



Здравствуйте у меня такая проблема. Мне нужно чтобы в webbrowser вывелась таблица еще не созданного файла, причем чтобы были использованы стили для данной таблицы. Вывожу текст webbrowser следующим образом:

Код

procedure TForm1.FormCreate(Sender: TObject);
begin
  WebBrowser1.Navigate('about:blank');
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Range: IHTMLTxtRange;
begin

  Range := ((WebBrowser1.Document as IHTMLDocument2).body as
    IHTMLBodyElement).createTextRange;
      Range.collapse(true);
      Range.pasteHTML( '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">');
      Range.pasteHTML( '<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1251"><link rel="stylesheet" type="text/css" href="file:///C:/Users/Admin/Desktop/style.css">');
      Range.pasteHTML( '<title>Текст</title>');
      Range.pasteHTML( '</head>');
      Range.pasteHTML( '<body>');
      Range.pasteHTML( '<h1>Текст</h1>');
      Range.pasteHTML( '<table align="center" width="100%" border="0">');
      Range.pasteHTML( '<tr><td>');
      Range.pasteHTML( '<p><span class="note">Текст</span></p>');
      Range.pasteHTML( '</td></tr>');
      Range.pasteHTML( '<td><tr>');
      Range.pasteHTML( '<table align="center" cellpadding="2" cellspacing="0" width="100%" border="1" bordercolor="white" class="infotable">');
      Range.pasteHTML( '<tr class="header">');
      Range.pasteHTML( '<td colspan="3">Текст</td>');
      Range.pasteHTML( '</tr><tr class="content">');
      Range.pasteHTML( '<td width="45%">Текст</td>');
      Range.pasteHTML( '<td width="42%">Текст</td>');
      Range.pasteHTML( '<td>Текст</td>');
      Range.pasteHTML( '</tr><tr class="foot-l">');
      Range.pasteHTML( '<td>Текст:</td>');
      Range.pasteHTML( '<td>Текст</td>');
      Range.pasteHTML( '<td></td>');
      Range.pasteHTML( '</tr></table>');
      Range.pasteHTML('</td></tr>');
      Range.pasteHTML('</table>');
      Range.pasteHTML('</body>');
      Range.pasteHTML('</html>');
end;


Как правильно сделать, чтобы в webbrowser корректно отображался текст? 
PS. Если открыть уже готовый html файл с тем же кодом то в webbrowser, то отображается все хорошо.
PM MAIL   Вверх
cat512
Дата 5.4.2011, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 438
Регистрация: 20.3.2007

Репутация: 3
Всего: 15



Ещё раз, по русски, объясни что надо сделать
PM MAIL   Вверх
fireofdeath
Дата 5.4.2011, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 21.6.2010

Репутация: нет
Всего: нет



В webbrowser весь текст выводится в одну строчку, а мне нужно чтобы текст был в таблице (тот что между тегами <table></table>) и для данной таблицы были использованы css стили. Если по русски у меня не работают теги.
PM MAIL   Вверх
cat512
Дата 5.4.2011, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 438
Регистрация: 20.3.2007

Репутация: 3
Всего: 15



Скажи пожалуйста, а зачем ты в тело документа, добавляешь HTML теги (родительского элемента)?
PM MAIL   Вверх
fireofdeath
Дата 5.4.2011, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 21.6.2010

Репутация: нет
Всего: нет



Ну я нашел код в drkb 'Добавить HTML к TWebBrowser Document', вот им и воспользовался, а как правильно сделать я не знаю, вот и спрашиваю, если гдето написано, как нужно буду рад прочитать про это.

PM MAIL   Вверх
cat512
Дата 5.4.2011, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 438
Регистрация: 20.3.2007

Репутация: 3
Всего: 15



Я посмотрел, этот код, у меня, начиная с тега <h1> всё корректно компонуется броузером
PM MAIL   Вверх
fireofdeath
Дата 5.4.2011, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 21.6.2010

Репутация: нет
Всего: нет



Жаль, что у меня не выводится как надо   smile 
PM MAIL   Вверх
cat512
Дата 6.4.2011, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 438
Регистрация: 20.3.2007

Репутация: 3
Всего: 15



Попробуй убрать код до тега h1.
PM MAIL   Вверх
fireofdeath
Дата 6.4.2011, 07:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 21.6.2010

Репутация: нет
Всего: нет



Я пробовал так, но без результата.
PM MAIL   Вверх
fireofdeath
Дата 8.4.2011, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 21.6.2010

Репутация: нет
Всего: нет



А можно как-нибудь по другому вывести в WebBrowser информацию?

Это сообщение отредактировал(а) fireofdeath - 8.4.2011, 18:28
PM MAIL   Вверх
cat512
Дата 9.4.2011, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 438
Регистрация: 20.3.2007

Репутация: 3
Всего: 15



как вариант использовать Document.write
Код

procedure TForm1.btn1Click(Sender: TObject);
var
  Doc: IHTMLDocument2;
  E: IHTMLElement2;
  V: Variant;
  Arr: PVarArray;
begin
  wb1.Navigate('about:blank');
  Doc := (wb1.Document as IHTMLDocument2);

//Здесь используется вариант
//но лучше наверное через нативные функции типа SafeArrayCreate. SafeArrayCreateVector
  V := VarArrayCreate([0, 0], varVariant);
  V[0] := '<BODY><H1>HELLO</H1><table><tr><H2>Hello</H2></tr></table></BODY>';
  Arr := VarArrayAsPSafeArray(V);
  Doc.write(PSafeArray(Arr));
end;

Можно через IHtmlFragment

Это сообщение отредактировал(а) cat512 - 9.4.2011, 22:58
PM MAIL   Вверх
fireofdeath
Дата 12.4.2011, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 21.6.2010

Репутация: нет
Всего: нет



Спасибо то, что нужно  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0585 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.