|
#1
|
|||
|
|||
StringGrid и цвет
Как сделать так, чтобы некоторая строка в StringGrid имела какой
нибудь цвет? |
#2
|
||||
|
||||
Код:
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; |
#3
|
||||
|
||||
Эт-та слишком просто. А вот ежли, например, привязать изменение цвета строк к смене даты? Плюс вне зависимости от даты при вводе новой строки отменить ранее изменённый цвет?
АлександрЪ Последний раз редактировалось АлександрЪ, 01.06.2006 в 16:45. |