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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Возможно ли получить доступ к Таблице в html файле 
:(
    Опции темы
bloodman
Дата 16.11.2004, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть html страничка , в ней есть таблица (<table ... ) Возможно ли получить доступ к следующим параметрам таблици: количество строк и достум к каждой ячейке в этой таблице??Все это дело находится в TWebBrowser.
PM MAIL   Вверх
p0s0l
Дата 16.11.2004, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

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



Вот примерчик накидал. Немного объясню:
1) tables - коллекция тегов <table> (содержит все таблицы в страничке)
tables.length - количество таблиц
tables.item(i, 0) - i-тая таблица

2) table - конкретная таблица из tables (в данном примере берётся первая таблица)
table.rows - коллекция строк таблицы
table.rows.length - количество строк в таблице

3) row - конкретный ряд таблицы (перебираются все ряды таблицы в цикле)
row.cells - коллекция ячеек в этой строке
row.cells.length - количество ячеек в этой строке

4) el и cell - конкретная ячейка таблицы (перебираются все ячейки во всех рядах в цикле)
Только el - это универсальный интерфейс IHTMLElement, с помощью которого можно узнать любые свойства любого элемента HTML-страницы. В данном случае он используется для получения HTML-содержимого ячейки (InnerHtml). Также можно заюзать InnerText - текст ячейки.
cell - специальный интерфейс IHTMLTableCell, с помощью его проще узнать параметры ячейки (align, valign, width, и др.)... Но как из него получить html-код ячейки или её текст - я не понял... Видимо нельзя... Поэтому и используется IHTMLElement...

Примечание: у row, table также есть специфические методы для получения значений (типа align, valign)...

Для теста на форму помести StringGrid1...
Код

uses MSHTML;

procedure TForm1.Button1Click(Sender: TObject);
var
 doc : IHTMLDocument2;
 tables : IHTMLElementCollection;
 table : IHTMLTable;
 row : IHTMLTableRow;
 cell : IHTMLTableCell;
 el : IHTMLElement;
 r, c : integer;
begin
 doc := WebBrowser1.Document as IHTMLDocument2;
 tables := doc.all.tags('table') as IHTMLElementCollection;
 table := tables.item(0, 0) as IHTMLTable;
 for r := 0 to table.rows.length-1 do
 begin
   row := table.rows.item(r, 0) as IHTMLTableRow;
   for c := 0 to row.cells.length-1 do
   begin
     el := row.cells.item(c, 0) as IHTMLElement;
     cell := el as IHTMLTableCell;
     if StringGrid1.ColCount < c then StringGrid1.ColCount := c;
     if StringGrid1.RowCount < r then StringGrid1.RowCount := r;
     StringGrid1.Cells[c, r] := el.innerHTML;
   end;
 end;
end;




--------------------
С уважением, г-н Посол.
PM   Вверх
bloodman
Дата 17.11.2004, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо огромное!!! Такого полного ответа я еще не получал . Еще раз спасибо!

Случайно не знаешь, где можно попобробней почитать про mshtml , желательно на русском. Как я понял это набор СOM интерфейсов и с их помошью можно обойтись и без TWEbBrowser плюс создать нормальную многопоточную программу ( TWebBrowser мне очень не советовали засовывать в поток отличный от главного ) ? Буду очень благодарен за любую информацию , так как с этой технологией сталкнулся впервые.
PM MAIL   Вверх
p0s0l
Дата 17.11.2004, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

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



Если ты понял пример, то остальное легко понять, глянув mshtml.pas - там расписаны интерфейсы...

http://www.sources.ru/delphi/delphi_twebbrowser_faq.shtml
http://program.rin.ru/razdel/html/1009.html
http://wdh.suncloud.ru/dhtml07.htm
Добавлено @ 21:14
А также кое-какие вопросы рассмотрены в DRKB... smile


--------------------
С уважением, г-н Посол.
PM   Вверх
bloodman
Дата 17.11.2004, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо , пример я понял. Ты хорошо расписал что к чему , и именно то что мне нужно было. Спасиб
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.0757 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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