Содержание материала

Автор: Alex Schlecht

 StringGrids / DBGrids с цветными ячейками смотрятся очень красиво, и Вы можете информировать пользователя о важных данных внутри Grid.

Совместимость: все версии Delphi

К сожалению, невозможно применить один и тот же метод к StringGrids и к DBGrids. Итак сперва рассмотрим как это сделать в StringGrid:

1. StringGrid

=============

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

 

Code:

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;

 

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить