Показать сообщение отдельно
  #4  
Старый 17.10.2016, 16:32
Аватар для Alegun
Alegun Alegun вне форума
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;
Ответить с цитированием