Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.11;
Скачать: CL | DM;

Вниз

канвас в гриде   Найти похожие ветки 

 
неугомонный   (2007-10-15 16:21) [0]

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

в обработчике 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 не рискнул...
как быть?


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


> как быть?

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


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

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


 
clickmaker ©   (2007-10-15 16:33) [3]


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

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


 
Ins ©   (2007-10-15 16:34) [4]


> неугомонный   (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;


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

и правда:)))

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


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


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

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


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

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


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

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


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

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


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

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

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


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

Тогда см [8]


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

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


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

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) [14]


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


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


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

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



Страницы: 1 вся ветка

Текущий архив: 2007.11.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.028 c
2-1192622267
foreverDelphi
2007-10-17 15:57
2007.11.11
f1:File;


15-1191690459
mike-d
2007-10-06 21:07
2007.11.11
easy - с Днем рождения!


2-1193035306
temp_and_test
2007-10-22 10:41
2007.11.11
Какой объект вызывает ошибку Access Violation?


15-1191966748
Petr V. Abramov
2007-10-10 01:52
2007.11.11
действительно сломалось все


2-1192877256
P'ero
2007-10-20 14:47
2007.11.11
Как произвести поиск по всему компьютеру (конкретный вайл)?