Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

канвас в гриде


неугомонный ©   (2007-10-15 16:21:00) 

добрый день мастера, прошу помочь разобраться в проблеме.

в обработчике ondrawwcell грида:
If ARow > 0 then
begin
 Y := table_2.DefaultRowHeight*ARow+ARow-1;
 table_2.Canvas.MoveTo(0,Y);
 table_2.Canvas.LineTo(table_2.Width, y);
end;

все норм, но если начинаю пользоваться скроллом то старые линии остаются и все криво выглядит, в ondrawwcell добавлять invalidate не рискнул...
как быть?


Германн   (2007-10-15 17:03:00) [1]

If ARow >= 0 then
begin
table_2.Canvas.MoveTo(Rect.Left,Rect.Bottom);
table_2.Canvas.LineTo(Rect.Right, Rect.Bottom);
end;


неугомонный   (2007-10-15 16:59:00) [2]

If ARow >= 0 then
begin
 table_2.Canvas.MoveTo(0,Rect.Bottom);
 table_2.Canvas.LineTo(table_2.Width, Rect.Bottom);
end;

если я правильно понял то так...работает:))


Германн   (2007-10-15 16:59:00) [3]


> :( я не понимаю как это рисовать в пределах rect
>


От левого нижнего угла до правого нижнего угла.


неугомонный   (2007-10-15 16:56:00) [4]

:( я не понимаю как это рисовать в пределах rect


Германн   (2007-10-15 16:51:00) [5]

Тогда см [8]


неугомонный   (2007-10-15 16:49:00) [6]

но тогда линии будут белого цвета, т.к. все ячейки у меня порашенны.

приходится самому рисовать черные линии


Германн   (2007-10-15 16:46:00) [7]

А может будет проще добавить goHorzLine в Options?


Германн   (2007-10-15 16:43:00) [8]

В данном обработчике рисуй только в пределах Rect.


неугомонный   (2007-10-15 16:41:00) [9]

хм...можно как то иначе? как?


Германн   (2007-10-15 16:39:00) [10]


> неугомонный   (15.10.07 16:37) [5]

А зачем ты в обработчике отрисовки однойячейки рисуешь по всему гриду сразу?


неугомонный   (2007-10-15 16:37:00) [11]

и правда:)))

спасибо, но линии то потом все равно исчезают после скролла, почему?


Ins   (2007-10-15 16:34:00) [12]


> неугомонный   (15.10.07 16:29) [2]

Не нужно координаты ячейки самому высчитывать, как вы это делаете, просто используйте параметр Rect - туда передаются правильные границы ячейки.
If ARow > 0 then
begin
Y := Rect.Bottom-1;
table_2.Canvas.MoveTo(0,Y);
table_2.Canvas.LineTo(table_2.Width, y);
end;


clickmaker   (2007-10-15 16:33:00) [13]


> [2] неугомонный   (15.10.07 16:29)

и очень просто. две горизонтально, две вертикально


неугомонный   (2007-10-15 16:29:00) [14]

не понимаю как rect может быть использован для рисования линий


Ins   (2007-10-15 16:23:00) [15]


> как быть?

Используйте параметр Rect, который также передается в обработчик события.


Наверх

Титульная страница Поиск, карта сайта Написать письмо