![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 16.04.2009
Сообщений: 247
|
![]() Код:
Если что, из GridDrawCell вызывается TCell.Draw. В каждом экземпляре TCell есть ссылка на грид. Собственно, почему при прокрутке возникает такой эффект? Последний раз редактировалось megachuhancer; 29.07.2010 в 06:01. |
![]() |
![]() |
![]() |
#2 |
220400
Форумчанин
Регистрация: 21.05.2010
Сообщений: 726
|
![]()
Попробуйте <Имя вашей формы>.DoubleBuffered := true;
ПС: в своем TStringGrid не нашел событие TCell.Draw
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам. Не учите человека, если вы не его учитель. |
![]() |
![]() |
![]() |
#3 | ||
Форумчанин
Регистрация: 16.04.2009
Сообщений: 247
|
![]() Цитата:
Цитата:
Код:
Получается, что GridDrawCell вызывается с такими параметрами, с какими "считает нужным" сам TStringGrid. И при прокрутке по мнению разработчиков этого компонента достаточно перерисовать вновь появившуюся часть ячейки. Последний раз редактировалось megachuhancer; 29.07.2010 в 06:31. |
||
![]() |
![]() |
![]() |
#4 |
220400
Форумчанин
Регистрация: 21.05.2010
Сообщений: 726
|
![]()
Используйте компонент TDrawGrid, а не TStringGrid
помню уже сталкивался с проблемой рисования в StringGrid'е, чего только не пробовал - помогло одно - переход на TDrawGrid
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам. Не учите человека, если вы не его учитель. |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 16.04.2009
Сообщений: 247
|
![]()
Увы, но в TDrawGrid та же проблема, что в общем-то неудивительно, т.к. TStringGrid - наследник TDrawGrid.
Короче, вся проблема упирается в то, как определить координаты всего прямоугольника ячейки, а не только его видимой части. Последний раз редактировалось megachuhancer; 04.08.2010 в 06:50. |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 31.01.2011
Сообщений: 42
|
![]()
Попробуйте явным образом определять координаты интересующей вас области. Например, закрашиваем первые 2 ячейки второго столбца таблицы GridClients:
TRect R; GridClients->Canvas->Brush->Color=clYellow; R.left=GridClients->ColWidths[0]; R.right=GridClients->ColWidths[0]+GridClients->ColWidths[1]; R.top=0; R.Bottom=GridClients->RowHeights[0]; GridClients->Canvas->Rectangle(R); R.Top=GridClients->RowHeights[0]; R.Bottom=GridClients->RowHeights[0]+GridClients->RowHeights[1]; GridClients->Canvas->Rectangle(R); При прокрутке эффект полос исчезает. Правда, возникает вопрос, как учесть толщину линий сетки, ибо при таком подходе при закрашивании ряда ячеек, накапливается "сползание" закрашенных областей. Если у вас возникнут какие-то соображения по этому поводу, буду рад услышать ![]() |
![]() |
![]() |
![]() |
#7 | |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 31.01.2011
Сообщений: 42
|
![]() |
![]() |
![]() |
![]() |
#9 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
![]()
Нет. Ширина i-ой ячейки = ColWidths[i]. А GridLineWidth - расстояние м/у ячейками.
|
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 31.01.2011
Сообщений: 42
|
![]() |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с рисованием на Timage Delphi7 | Dalagardi | Помощь студентам | 1 | 19.04.2010 20:48 |
Проблема с рисованием на канве в TPaintBox | pro100-delphi | Помощь студентам | 10 | 09.03.2010 19:41 |
проблема с рисованием сферы | kady | Помощь студентам | 14 | 25.01.2010 17:48 |
Непонятки с рисованием на форме | ROD | Общие вопросы C/C++ | 2 | 03.02.2009 18:14 |
Проблема с рисованием прямоугольника | Юра. | Общие вопросы Delphi | 13 | 04.08.2007 06:08 |