![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| BuShaRt |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: нет Всего: 6 |
Есть задача закрасить или хотя бы просто выделить жирным шрифтом определенные ячейки StringGrid.
В сети я нашел множество невероятных способов на основе работы с событием ondrawcell, но не смог найти информации, как это можно организовать просто функцией, чтоб в итоге от меня требовалось только написать. Функция_Закрашивания_Ячейки (координата_строки, координата_колонки, цвет); |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
Используй ondrawcell.
В чем невероятность способа? -------------------- Обижено школьников: 8 |
|||
|
||||
| ~FoX~ |
|
||||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 5 Всего: 68 |
Выносить это за рамки DrawCell нету ни какого смысла
Но если очень хочится:
Это сообщение отредактировал(а) ~FoX~ - 12.5.2010, 08:58 |
||||
|
|||||
| BuShaRt |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: нет Всего: 6 |
Сразу уточню, что я могу ошибаться в своих суждениях, поэтому если мои аргументы будут не верными, убедительная просьба исправить меня.
Я считаю, что все задачи должны выполняться четко, без лишних телодвижений. Конечно, есть вариант, что я плохо понимаю как работает ondrawcell, но меня терзают сомнения, что лишнего она делает порядочно много. ~FoX~ Оба варианта решены возможности гибкого динамического закрашивания n-ого кол-ва ячеек, в то время как обычную процедуру можно будет запустить из любого участка кода в цикле или с условиями. Это сообщение отредактировал(а) BuShaRt - 12.5.2010, 14:02 |
|||
|
||||
| BuShaRt |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: нет Всего: 6 |
Вот, что у меня получилось сделать самому, но есть проблема - canvas ложиться только поверх краев (0,n) и (n,0) иначе он заходит под белые ячейки и его не видно. Как это можно исправить?
Это сообщение отредактировал(а) BuShaRt - 12.5.2010, 15:05 |
|||
|
||||
| BuShaRt |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: нет Всего: 6 |
Хм, что интересно - моя функция срабатывает коряво если ее запускать при событие DblClick, но если ее использовать через ondrawcell, то результат именно такой, какой нужен. Может кто-нибудь объяснить почему так.
|
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 5 Всего: 68 |
||||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
Потому что событие возникает, когда ячейка нуждается в перерисовке. А рисование по даблклику одноразовое - раз нарисовал, при соледующей же порче картинки (перекрытие другим окном, изменение размеров и тд) эта информация теряется. Твоя проблема в том, что ты не понимаешь, что грид не хранит картинку (окей, с DoubleBuffered картинка хранится, но буфер тебе недоступен). Нельзя просто "закрасить ячейку". Можно нарисовать её закрашенной, когда грид сообщает, что ему нужна нормальная нарисованная ячейка. -------------------- Обижено школьников: 8 |
|||
|
||||
| BuShaRt |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: нет Всего: 6 |
Я все понял. Просто почему-то авторы популярных статей на эту тему, решили, что программистам не обязательно знать, почему именно ondrawcell. От сюда и пошло мое невежество. Добавлено через 2 минуты и 24 секунды А по поводу динамичности, я решил, что в таком случае надо просто завести глобальный массив и вписывать туда координаты необходимых точек, в итоге на базе этого массива циклом по ondrawcell красить ячейки. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |