![]() |
|
|
#1
|
|||
|
|||
|
Как сделать так, чтобы некоторая строка в 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. |