![]() |
|
![]() ![]() ![]() |
|
Volfs |
|
|||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 31.7.2009 Репутация: нет Всего: нет |
Добрый день!
Делаю объединение ячеек StringGrid в ручном режиме, рисую в обработчике DrawCells Алгоритм объединения работает нормально Но есть следующая проблема, когда прокручиваю таблицу вниз обновляются (заново прорисовываются) не все ячейки, а только заново появляющиеся, поэтому объединенные ячейки прорисовываются не правильно. Как обновить либо все видимые ячейки в соответствие с заложенным в обработчик DrawCells алгоритмом, либо заданное количество ячеек. Присоединённый файл ( Кол-во скачиваний: 4 ) ![]() |
|||
|
||||
Volfs |
|
|||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 31.7.2009 Репутация: нет Всего: нет |
есть еще один вариант, для формирования внешнего вида стринг грида, сначало формировать матрицу с описанием каждой ячейки, а обработчиком событий ДравЦеллс только читать эту матрицу и в соответствие с ней рисовать ячейки
|
|||
|
||||
sawfish |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 30.7.2008 Где: Новосибирск Репутация: 8 Всего: 8 |
Если прорисовывание выполняется неправильно, значит какое-то условие выполняется (или не выполняется) для этого. Проверьте условия объединения/прорисовки.
|
|||
|
||||
Volfs |
|
|||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 31.7.2009 Репутация: нет Всего: нет |
Условия все должны быть верны. В приложение несколько вкладок, и если перейти на другую вкладку и вернуться обратно то все прорисовывается верно, либо если прокручивать таблицу не по одной строчке, а сразу по несколько (перетаскивая ползунок прокрутки), то все верно. По этому мне кажется, что заново прорисовываются только ячейки, которые становятся видимыми. |
|||
|
||||
sawfish |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 30.7.2008 Где: Новосибирск Репутация: 8 Всего: 8 |
С этим никто не спорит. Вообще, этой функцией все ячейки прорисовываются, но показываются (видны) не все. Но результат-то не тот, который ожидается. Поэтому напрашивается вывод, что какое-то условие там в коде стоит. Больше ниче не могу предположить... Ну или код показывайте. |
|||
|
||||
Volfs |
|
|||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 31.7.2009 Репутация: нет Всего: нет |
Просмотрел еще раз, написал код по другому, тот же результат. Есть функция, она прописывает в каждую ячейку фиксированной колонки номера, вот таким образом: 1 1 1 2 2 2 3 3 3 в соответствие с этими номерами объединяю ячейки, вот код объединения ячеек 7 строки
Когда начинаю прокрутку таблицы то ячейки то все прорисовывается только нижняя ячейка: http://hostingkartinok.com/show-image.php?...d4dd70af2e993b0 Если вызвать свойство стринг грида Repaint(), то все не прорисованные ячейки рисуются нормально: http://hostingkartinok.com/show-image.php?...8e4cd1ec4034818 |
|||
|
||||
sawfish |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 30.7.2008 Где: Новосибирск Репутация: 8 Всего: 8 |
Что такое SoilMoisture?
У вас на тех же строках нет прорисовки с первого скриншота, где есть прорисовка со второго скриншота? И в каком месте вы Repaint() вызваете? Она же все равно руководствуется тем, что в OnDrawCell записано... |
|||
|
||||
sawfish |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 30.7.2008 Где: Новосибирск Репутация: 8 Всего: 8 |
Что-нибудь в итоге получилось?
|
|||
|
||||
Volfs |
|
|||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 31.7.2009 Репутация: нет Всего: нет |
sawfish, добавил Repaint() в обработчик OnDrawCell при каждой прокрутке (сдвиге ячеек) это исправило прорисовку ячеек, но до нормального объединения еще еще далеко, допустим при щелчке в ячейку которая находиться под растянутой ячейкой можно поставить курсор...
Решил сделать таблицу из GridPanel. |
|||
|
||||
sawfish |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 30.7.2008 Где: Новосибирск Репутация: 8 Всего: 8 |
Даааа, "давно не брал я шашку в руки"...
У меня же на событие OnTopLeftChanged прописан вызов Repaint() ![]() |
|||
|
||||
Volfs |
|
|||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 31.7.2009 Репутация: нет Всего: нет |
Бывает ![]() ![]() СтрингГрид то рисуется исходя из логики обработчика в дравцел, но при прокрутке перерисовывается не весь, а только новые ячейки, а старые просто сдвигаются вверх. Это сообщение отредактировал(а) Volfs - 13.2.2012, 20:07 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |