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

Вниз

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

 
петрович07   (2007-11-11 15:44) [0]

мастера подскажите что делаю не так и направьте в нужное русло)))
рисую на канве stringgrid"a линии(границы клеток). Рисуется все норм.,но как только я начинаю двигать ползунок вниз грид начинает перерисовываться и тут происходит моргание мерцание,вообщем долго перерисовывается,мне кажется я не правильно делаю:

 table_2.Canvas.Pen.Color := clBlack;
 table_2.Canvas.Pen.Width := 1;
 rect := table_2.CellRect(ACOl, Arow);
       if ARow >= 0 then
 begin
   table_2.Canvas.MoveTo(Rect.Left,Rect.Bottom);
   table_2.Canvas.LineTo(Rect.Right, Rect.Bottom);
 end;

 if ACol >= 0 then
 begin
   table_2.Canvas.MoveTo(Rect.Right, rect.Top);
   table_2.Canvas.LineTo(Rect.Right, Rect.Bottom);
 end;

 table_2.Canvas.Pen.Color := clred;
//Рамка
 table_2.Canvas.MoveTo(0, 0);
 table_2.Canvas.LineTo(0, table_2.Height);

 table_2.Canvas.MoveTo(0, table_2.Height-1);
 table_2.Canvas.LineTo(table_2.Width, table_2.Height-1);

 table_2.Canvas.MoveTo(table_2.VisibleColCount*table_2.DefaultColWidth+table_2.VisibleColCount-1, 0);
 table_2.Canvas.LineTo(table_2.VisibleColCount*table_2.DefaultColWidth+table_2.VisibleColCount-1, table_2.Height-1);

и т.д.


 
KilkennyCat ©   (2007-11-11 16:51) [1]

и где сей код обрабатывается?


 
bagos   (2007-11-11 17:48) [2]

в ondrawcell грида


 
петрович07   (2007-11-11 17:49) [3]

>и где сей код обрабатывается?  ondraw


 
KilkennyCat ©   (2007-11-11 22:33) [4]

ondrawcell - что-то мне кажется, что сие относится к одной текущей ячейке. Попытка перерисовки всей таблицы, вместо одной ячейки - это нехорошо. Перерисовывайте только нужное. Тогда количество перерисовок всей таблицы уменьшится в количество раз, равное количеству ячеек.


 
Amoeba ©   (2007-11-11 22:41) [5]


> table_2.Canvas.MoveTo(table_2.VisibleColCount*table_2.DefaultColWidth+table_2.
> VisibleColCount-1, 0);
>  table_2.Canvas.LineTo(table_2.VisibleColCount*table_2.DefaultColWidth+table_2.
> VisibleColCount-1, table_2.Height-1);

Вот здесь собака и зарыта. Далее читаем
> KilkennyCat ©   (11.11.07 22:33) [4]

OnDrawCell действительно относится только к одной текущей ячейке, и вылезать за ее границы нельзя.


 
петрович07   (2007-11-12 00:12) [6]

спасибо вам большое,как сам не догадался..знал же))))

сделал в TopLeftChanged,все оч даже хорошо


 
ЮЮ ©   (2007-11-12 04:33) [7]

> сделал в TopLeftChanged,все оч даже хорошо

Ничего хорошего в рисовании в TopLeftChanged нет. Проведи над гридом форму чужого приложения. И как теперь?


 
петрович07   (2007-11-12 13:52) [8]

мда..и где рисовать тогда?


 
петрович07   (2007-11-12 23:23) [9]

скажите плиз, а то не реал так работать когда такая перерисовка дурацкая..:(


 
Virgo_Style ©   (2007-11-12 23:48) [10]

> петрович07   (12.11.07 13:52) [8]


Таки в OnDrawCell


 
петрович07   (2007-11-13 00:27) [11]

но ondrawcell для одной ячейки


 
Amoeba ©   (2007-11-13 00:38) [12]


> петрович07   (13.11.07 00:27) [11]
>
> но ondrawcell для одной ячейки

Прямо как об стену горох...

Так и код отрисовки должен быть именно для одной ячейки. И нечего при отрисовке залезать с MoveTo и LineTo за ее пределы. И рисовать именно в OnDrawCell.


 
KilkennyCat ©   (2007-11-13 00:56) [13]

Добавлю, на всяк пожарный :)
В стрингриде отрисовываются все ячейки! Т.е. ондроуцелл сработает для всех ячеек, а не только для избранных.


 
Германн ©   (2007-11-13 01:52) [14]


> KilkennyCat ©   (11.11.07 22:33) [4]
>
>

Было уже такое. И тот же совет я давал тому автору. Похоже сей топик нужно адресовать LVT. Пусть и его учтёт в своём нынешнем (и очень полезном начинании).



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

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

Наверх




Память: 0.49 MB
Время: 0.029 c
15-1194548396
@!!ex
2007-11-08 21:59
2007.12.09
Закон и Linux


2-1195042098
WFS
2007-11-14 15:08
2007.12.09
Как обработать нажатие Отмены в окне открытия файла?


2-1194838802
d@nger
2007-11-12 06:40
2007.12.09
Jpeg и дата съемки


1-1189163263
S@shka
2007-09-07 15:07
2007.12.09
Старт программы из Сервиса


2-1195027082
dumka
2007-11-14 10:58
2007.12.09
запрос с параметром