Вопрос № 55325: Помогите решить проблему. По данным из БД строится StringGrid. Ячейки закрашиваются и в них заносятся значения в зависимости от значений атрибутов. Но при закраске ячеек из всех них пропадают значения кроме верхней левой.
...
Вопрос № 55.325
Помогите решить проблему. По данным из БД строится StringGrid. Ячейки закрашиваются и в них заносятся значения в зависимости от значений атрибутов. Но при закраске ячеек из всех них пропадают значения кроме верхней левой.
Приложение:
Отправлен: 13.09.2006, 18:41
Вопрос задал: Daft82 (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Маренич Владимир
Здравствуйте, Daft82!
Посмотрите внимательно на строки в процедуре TFormPreview.StringGrid1DrawCell:
......
for i:=0 to (Sender as TStringGrid).Col do
for j:=0 to (Sender as TStringGrid).row do
begin
......
end;
......
У Вас прорисовка текста происходит от ячейки [0,0] до текущей ячейки.
Не нужно это делать в цикле. Отрисовывайте только одну ячейку!
.....
(Sender as TStringGrid).Canvas.FillRect(rect);
for i:=0 to (Sender as TStringGrid).Col do
for j:=0 to (Sender as TStringGrid).row do
begin
area:=Rect; //Вам в событие уже передают участок, который нужно прорисовать
(Sender as TStringGrid).Canvas.TextRect(area,area.X,area.Y,(Sender as TStringGrid).Cells[ACol,ARow]);
end;
(Sender as TStringGrid).Canvas.DrawFocusRect(rect);
end;
end.
Ответ отправил: Маренич Владимир (статус: Студент)
Ответ отправлен: 13.09.2006, 18:57 Оценка за ответ: 5 Комментарий оценки: Спасибо. Уже сам разобрался.