Цветные ячейки в StringGrid
Категория: Delphi/Pascal
2012-10-15 15:41:06
Для раскрашивания будем использовать событие "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
Поделиться: