Цветные ячейки в StringGrid

Для раскрашивания будем использовать событие "OnDrawCell". Следующий код показывает, как сделать в Grid красный бэкраунд. Бэкграунд второй колонки будет зелёным.

code: #delphi
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;  
  Rect: TRect; State: TGridDrawState);  
 
Const   //сдесь определяем Ваш цвет. Так же можно использовать  
        //цвета по умолчанию.  
  clPaleGreen = TColor($CCFFCC);  
  clPaleRed =   TColor($CCCCFF);  
 
begin  
 
//Если ячейка получает фокус, то нам надо закрасить её другими цветами  
if (gdFocused in State) then begin      
   StringGrid1.Canvas.Brush.Color := clBlack;  
   StringGrid1.Canvas.Font.Color := clWhite;  
end  
else  //Если же ячейка теряет фокус, то закрашиваем её красным и зелёным  
 
   if ACol = 2   //Вторая колонка будет зелёной , другие - ячейки красными  
    then StringGrid1.Canvas.Brush.color := clPaleGreen  
    else StringGrid1.canvas.brush.Color := clPaleRed;  
 
//Теперь закрасим ячейки, но только, если ячейка не Title- Row/Column  
//Естевственно это завит от того, есть у Вас title-Row/Columns или нет.  
 
If (ACol > 0) and (ARow>0) then  
  begin  
      //Закрашиваем бэкграунд  
    StringGrid1.canvas.fillRect(Rect);  
 
      //Закрашиваем текст (Text). Также здесь можно добавить выравнивание и т.д..  
    StringGrid1.canvas.TextOut(Rect.Left,Rect.Top,StringGrid1.Cells[ACol,ARow]);  
  end;  
end; 

автор: Alex Schlecht

Поделиться:

Похожие статьи: