Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.02.2008, 18:00   #1
romets
Пользователь
 
Регистрация: 21.01.2008
Сообщений: 32
По умолчанию Нестандартная шапка для грида

Пишу табличное представление данных (grid), с этим все получилось. Хотелось бы шапку с заголовком данных нарисовать для всего этого дела, но не простую, а золотую - с объединенными ячейками (и по горизонтали и по вертикали), например. С самим рисование проблем нет, а вот как это дело хранить? Как хранить информацию, что тут вот ячейка объеденина с верхней, тут четыре объеденины? Наверное, это как-то просто, но вот пока нет совершенно никаких мысле.
Заранее спасибо, уважаемые джентельмены.
romets вне форума Ответить с цитированием
Старый 08.02.2008, 09:44   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Здесь проблема скорее не в том как хранить, а как все это описывать.
Предлагаю такую схему. На шапку наложена координатная сетка. Не важно в каких единицах. У меня это делается в символах, а потом приведение к координатам grid. Для каждой ячейки хранится область, которую она занимает в координатах сетки. Сами ячейки в простом списке. А теперь описание. Используются три метода - простое добавление, добавление вниз, добавление вправо.

Добавляем первую ячейку

add(10)
// указываем только ширину
// получили ----1----

добавляем 2-ю

add(10)
// ----1--- ---2----

добавляем ячейку вниз от последней

addDown(10)
// ---1---- ---2----
// -------- ---3----

После такого добавления корректируется высота 1 ячейки и ширина 2-й

Добавляем вправо от последней

addRight(10)
// ----1---- ----2------------
// --------- ---3--- ----4----

и снова корректируется ширина 2-й

Добавляем новую колонку

add(10)
// -----1----- ----2--------- -----5------
// ----------- ---3--- ---4--

Высота новой ячейки корректируется с учетом уже вставленных.
Этими тремя методами можно описать шапку любой сложности.

Ячейки покрывают всю область шапки и для каждой есть координаты прямоугольника. А дальше все просто. Берем прямоугольник, который нужно отрисовать, смотрим какие ячейки в него попадают и вызываем их методы Draw.

Последний раз редактировалось alexBlack; 08.02.2008 в 09:48.
alexBlack вне форума Ответить с цитированием
Старый 08.02.2008, 13:17   #3
romets
Пользователь
 
Регистрация: 21.01.2008
Сообщений: 32
По умолчанию

Не слукавлю, если скажу - замечательная идея! Спасибо.
romets вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шапка таблицы Aiorosu БД в Delphi 10 24.03.2009 10:24
Нестандартная работа с COM портом Alex_C Win Api 2 22.07.2008 02:34
Нестандартная задача с цветами ячеек ДБГрид! Abbatik БД в Delphi 2 02.02.2008 18:02
Нестандартная форма Лубышев Общие вопросы Delphi 7 28.01.2008 20:33
Перенос содержимого грида в активную базу SpiDer87 БД в Delphi 13 24.12.2007 11:30