Страница 1 из 2

Как нарисовать HTML Table средствами Delphi

Добавлено: 11 дек 2006, 12:32
SergeyS
Суть задачи такова: дана таблица в HTML формате, например
[html]
<table>
<tr>
<td rowspan=2>Ячейка 1</td><td>Ячейка 2</td>
</tr>
<tr>
<td>Ячейка 3</td>
</tr>
</table>
[/html]
нужно её нарисовать.
Хотелось бы услышать хороший совет, как это оптимальнее всего сделать (количество строк может быть очень большим).
Стили, форматирование ячеек пока не имеет значение, хотя интересно было бы знать как лучше отрисовывать границы ячеек имеющие разное оформление (толщина, цвет и т.д.)

Re: Как нарисовать HTML Table средствами Delphi

Добавлено: 12 дек 2006, 10:21
Хыиуду
Нарисовать где, на чем? Прямо на канве формы, в Мемо с помощью псевдографики, в StringGrid?

Re: Как нарисовать HTML Table средствами Delphi

Добавлено: 13 дек 2006, 05:45
SergeyS
Нарисовать на Canvas'e формы, контрола где угодно... Нужно просто отобразить описание таблицы в графическом виде как таблицу - не код таблицы а именно то что этот код представляет.

Re: Как нарисовать HTML Table средствами Delphi

Добавлено: 13 дек 2006, 10:38
LAngel
а не проще передать её на отображение браузеру?

Re: Как нарисовать HTML Table средствами Delphi

Добавлено: 13 дек 2006, 10:54
Лелик_1044
Поставь Webbrowser
и ему загоняй
Будет свой ослик 6))

Re: Как нарисовать HTML Table средствами Delphi

Добавлено: 14 дек 2006, 05:27
SergeyS
Нет не проще, потому как в дальнейшем предполагается добавить некую интерактивность при просмотре изображения. Можно конечно интерактивность добавить и в браузере но это будет через одно место.

Я раньше работал напрямую с браузером (как компонентой), мне идея не очень понравилась, и под текущую задачу это совершенно не подходит.

Re: Как нарисовать HTML Table средствами Delphi

Добавлено: 14 дек 2006, 08:53
LAngel
&quot писал(а):Нет не проще...
Ну тогда надо писать парсер ;)

Re: Как нарисовать HTML Table средствами Delphi

Добавлено: 14 дек 2006, 14:01
Игорь Акопян
если уж
&quot писал(а):дана таблица в HTML формате
то выводить её всёже разумнее компонентом заточенным под HTML. Зачем велосипед изобретать? "Не понятно" (с)

Re: Как нарисовать HTML Table средствами Delphi

Добавлено: 14 дек 2006, 14:38
SergeyS
Наверно я не правильно объясняю, мне не нужно заниматься разбором html кода, я это уже умею (на крайний случай это можно представить как XML и разбирать xml parser'ом), задача в другом - нарисовать эту таблицу, ячейку за ячейкой, учитывая объединения этих ячеек, ну например можно было бы создать компонент на основе TStringGrid, и отрисовывать её с учётом информации заданной в HTML коде.

Трудность для меня в следующем: я не хочу перерисовывать таблицу каждый раз с начала и до конца (если таблица будет большой - будет много тормозов :) , а я хочу отрисовывать только те ячейки которые видны на данный момент времени, и ещё нужно учитывать что в видимую часть будут попадать части ячеек которые находятся далеко вверху или далеко в стороне (для случая ячеек с признаком colspan или rowspan). В принципе определение этих ячеек можно организовать путём сканирования таблицы при каждой её отрисовке, определением видимых ячеек и уже отрисовывать только их, но если таблица большая, то сканирование всей таблицы при каждом перерисовывании повлечет за собой также большие задержки. Вот меня и интересует проблема оптимального рисования большой таблицы с наличием объединённых ячеек.

Подобные гридины я уже рисовал и раньше, но все они сводились к аналогу TStringGrid, а это не самое удачное решение. Например для таблиц с большой разрежённостью данных это будет лишней тратой памяти (TStringGrid выделяет память под каждую строку, даже если там ничего нет).

Если для примера взять электронные таблицы, то мы можем ввести значение в начале таблицы и в конце таблицы (где-то за 10000 строк), а по середине пусто, то памяти такая таблица будет "жрать" столько-же сколько и при наличии всего двух строк в начале.

Моя цель создать компоненту схожую по функциональности с электронной таблицей, а HTML код я привёл для примера, думая что так будет понятнее, но похоже только больше запутал людей.

Re: Как нарисовать HTML Table средствами Delphi

Добавлено: 14 дек 2006, 14:42
SergeyS
И ещё, если у вас есть компоненты для Delphi (open source), которые как раз и делают то о чем я спрашиваю, то если не сложно скиньте на них ссылку. Только прежде чем создавать эту тему я перерыл весь инет в поисках подобно штуки и ничего похожего не нашёл (а может я искать не умею?)