Форум: "Начинающим";
Текущий архив: 2007.12.09;
Скачать: [xml.tar.bz2];
Внизотрисовка на канве грида Найти похожие ветки
← →
петрович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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.041 c