Главная страница
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.019 c
2-1194794278
soj
2007-11-11 18:17
2007.12.09
Получить код символа запятой.


6-1175513188
Digo
2007-04-02 15:26
2007.12.09
Трансляция видео через lan


1-1190018023
andreoman
2007-09-17 12:33
2007.12.09
проблема отображения всплывающей подсказки


2-1195119506
авыф
2007-11-15 12:38
2007.12.09
Как в рантайме у DataSource поменять DataSet


11-1180165434
Vladimir Kladov
2007-05-26 11:43
2007.12.09
Версия 2.63