Как работать со всеми ячейками таблицы в WebBrowsere
- Избавиться от интернет-зависимости очень легко! У нас в чате все проделывали это по нескольку раз.
Пример показывает как добавить содержимое каждой ячейки в TMemo:
procedure TForm1.Button1Click(Sender: TObject);
var
i, j: integer;
ovTable: OleVariant;
begin// Use first table
ovTable := WebBrowser1.OleObject.Document.all.tags('TABLE').item(0);
for i := 0 to (ovTable.Rows.Length - 1) dobeginfor j := 0 to (ovTable.Rows.Item(i).Cells.Length - 1) dobegin
Memo1.Lines.Add(ovTable.Rows.Item(i).Cells.Item(j).InnerText;
end;
end;
end;
Here's the translation of the provided text into Russian:
Код, который я предоставил, - это процедура Delphi, использующая встроенный WebBrowser-контрол для доступа к содержимому таблицы и добавления текста каждой ячейки в TMemo (компонент заметок).
Событийный обработчик Button1Click: эта процедура запускается при клике кнопки на вашем форме.
OleVariant: код использует переменную OleVariant, ovTable, для хранения объекта таблицы, полученного из WebBrowser-контрола.
WebBrowser1.OleObject.Document.all.tags('TABLE').item(0): эта строка получает первую таблицу на веб-странице с помощью свойства OleObject WebBrowser'а.
Перебор строк и ячеек: код затем перебирает каждую строку и ячейку таблицы с помощью двух вложенных циклов (i и j).
Доступ к содержимому ячеек: для каждой ячейки код использует ovTable.Rows.Item(i).Cells.Item(j).InnerText, чтобы получить текстовое содержимое этой ячейки.
Добавление в Memo1: наконец, код добавляет текстовое содержимое каждой ячейки в компонент заметок TMemo, именуемый Memo1.
Чтобы работать с всеми ячейками таблицы с помощью WebBrowser, вы можете следовать этим шагам:
Получение объекта таблицы: используйте тот же код, что и выше, для получения объекта таблицы из WebBrowser-контрола.
Перебор строк и ячеек: используйте два вложенных цикла (i и j) для перебора каждой строки и ячейки в таблице.
Доступ к содержимому ячеек: для каждой ячейки используйте свойство, такое как InnerText, Text или Value (в зависимости от типа данных), чтобы получить ее содержимое.
Обработка содержимого ячеек: вы можете обработать содержимое ячеек, как вам нужно, например, извлечь конкретную информацию или форматировать текст.
Повторение для всех ячеек: продолжайте перебор строк и ячеек до тех пор, пока не обрабатываете все ячейки в таблице.
Вот альтернативное решение с более современным подходом:
Вместо ручного прохождения структуры таблицы с помощью OleVariant вы можете использовать метод WebBrowser'а GetElementById для получения элемента таблицы по ее ID (если она имеет) или использовать XPath-выражения для выбора элементов внутри таблицы. Этот подход более гибок и легче поддерживать.
Например:
procedure TForm1.Button1Click(Sender: TObject);
var
table: IHTMLTableElement;
begin
// Получение элемента таблицы
table := WebBrowser1.Document.GetElementById('myTable');
if Assigned(table) then
begin
// Перебор строк и ячеек
for i := 0 to (table.Rows.Length - 1) do
begin
for j := 0 to (table.Rows.Item(i).Cells.Length - 1) do
begin
Memo1.Lines.Add(table.Rows.Item(i).Cells.Item(j).InnerText);
end;
end;
end;
end;
В этом коде используется метод GetElementById для получения элемента таблицы по ее ID ('myTable') и затем перебор строк и ячеек с помощью аналогичного логики, что и раньше. Главное отличие - это более надежный и легкий в поддержке подход, особенно при работе с сложными веб-страницами.
Статья описывает, как работать со всеми ячейками таблицы в WebBrowser с помощью языка Delphi и компонента TMemo.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.