Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Прорисовка StringGrid [D7]


Make ©   (2006-02-28 15:49:00) 

Подскажите, как в стринггриде изменить цвет у всех ячеек в строке?


antonn   (2006-02-28 17:29:00) [1]

для каждой ячейки вызывается персонально. в Rect: TRect; передается область, которая перерисовывется.
если строка "стабильно одна и та же", тогда можно воспользоваться case

case Arow of
0: begin
sgrResults.Canvas.Brush.Color := clYellow
  sgrResults.canvas.FillRect(Rect);
  sgrResults.canvas.TextOut(Rect.Left +2, Rect.Top +2, sgrResults.Cells[ACol,ARow]);
end;
end;


Make   (2006-02-28 17:19:00) [2]

событие OnDrawCell вызывается при прорисовке всех ячеек попорядку? Т.е. например при наведении фокуса на стринггрид заново перерисовываются все ячейки?


umbra   (2006-02-28 17:15:00) [3]


> ResultArray[ARow-1].Idling

а что это? вообще приведенный код может не давать ожидаемых результатов потому, что условие не выполняется


Make   (2006-02-28 16:55:00) [4]

очему не работает такой код:
procedure TIndexMainForm.sgrResultsDrawCell(Sender: TObject; ACol,
 ARow: Integer; Rect: TRect; State: TGridDrawState);
var
 TempIdx: Integer;
begin
 if (ACol<1) or (ARow<1) then
   Exit;

 if ResultArray[ARow-1].Idling then  // если заменить на
                                                //if ARow=2 then  то работает
 begin
   sgrResults.Canvas.Brush.Color := clYellow
   sgrResults.canvas.FillRect(Rect);
   sgrResults.canvas.TextOut(Rect.Left +2, Rect.Top +2, sgrResults.Cells[ACol,ARow]);
 end;

end;


Make   (2006-02-28 16:02:00) [5]

Я использую OnDrawCell, но она рисует только сфокусированную ячейку  if нужная строка then
 begin
   StringGrid1.Canvas.Brush.Color := clYellow;
   StringGrid1.canvas.FillRect(Rect);
   StringGrid1.canvas.TextOut(Rect.Left +2, Rect.Top +2, sgrResults.Cells[ACol,ARow]);
 end;
:


Наверх

Титульная страница Поиск, карта сайта Написать письмо