17.10.2016, 16:32
|
|
LMD-DML
|
|
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
|
|
Цитата:
Сообщение от Red_Garry
...Если определённое поле получает определённое значение, то ячейка (НЕ строка) окрашивается в определённый цвет. Желательно уметь красить не только фон ячейки, но и цвет шрифта...
|
Без конкретного примера кода может быть только общий ответ, всё это безобразие делается в процедуре DrawCell, причём несколькими способами, через сравнение или подсчёт, можно ещё внедрением свойств ячеи etc... Вот ещё немного такого для обычной сетки
Код:
procedure TForm1.DBS.DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
fcl, bcl: TColor;
fcs: TFontStyles;
begin
with DBS.Canvas do
begin
fcl := Font.Color;
fcs := Font.Style;
bcl := Brush.Color;
if gdSelected in State then
{ clBlack = TColor($000000);
clMaroon = TColor($000080);
clGreen = TColor($008000);
clOlive = TColor($008080);
clNavy = TColor($800000);
clPurple = TColor($800080);
clTeal = TColor($808000);
clGray = TColor($808080);
clSilver = TColor($C0C0C0);
clRed = TColor($0000FF);
clLime = TColor($00FF00);
clYellow = TColor($00FFFF);
clBlue = TColor($FF0000);
clFuchsia = TColor($FF00FF);
clAqua = TColor($FFFF00);
clLtGray = TColor($C0C0C0);
clDkGray = TColor($808080);
clWhite = TColor($FFFFFF);
}
begin
Font.Color :=TColor($FFFFFF);
Font.Style := Font.Style + [fsBold];
Brush.Color := clGreen;
end else
if ARow < FixedRows then
begin
Font.Color := TColor($000000);
Font.Style := Font.Style + [fsBold];
Brush.Color := TColor($00FFFF);
end else
if ACol < FixedCols then
begin
Font.Color := RGB(255, 255, 255);
Font.Style := Font.Style + [fsBold];
Brush.Color := RGB($66, $99, $CC);
end else
if ARow mod 2 = 0 then
begin
Font.Color := RGB(0, 0, 0);
Brush.Color := RGB($FF, $FF, $CC);
end else
begin
Font.Color := RGB(0, 0, 0);
Brush.Color := RGB($CC, $FF, $FF);
end;
FillRect(Rect);
TextOut(Rect.Left + 4, Rect.Top + 4, Cells[ACol, ARow]);
Font.Color := fcl;
Font.Style := fcs;
Brush.Color := bcl;
end;
end;
|