![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Здравствуйте!
Ввёл тему поста в поисковую строку и то, что получил в ответ, меня не удовлетворило... Блин, не могу разобраться. Добрые люди! Задача такая: Поля базы, на которую завязан DBGrid, имеют числовой формат. Если определённое поле получает определённое значение, то ячейка (НЕ строка) окрашивается в определённый цвет. Желательно уметь красить не только фон ячейки, но и цвет шрифта. Помогите с примером кода! Спасибо! Низкий поклон отклинувшимся |
|
#2
|
|||
|
|||
|
Код:
procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumnEh; State: TGridDrawState); if Column.Field.DataSet.FieldByName(STATUS_F).AsString='Выполнено' then begin with DBGrid.Canvas do begin Brush.Color:=$00FF77; Font.Color:=clBlack; FillRect(Rect); TextOut(Rect.Left+2,Rect.Top+2,Column.Field.Text); DBGrid.DefaultDrawColumnCell(Rect, DataCol, Column, State); end; |
|
#3
|
|||
|
|||
|
Спасибо за ответ! Только указанный код красит всю строку
|
|
#4
|
||||
|
||||
|
Цитата:
Код:
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; |
|
#5
|
|||
|
|||
|
Код:
procedure TForm6.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Column.Field.DataSet.FieldByName('1').AsInteger=777.00 then
begin
with DBGrid1.Canvas do begin
Brush.Color:=$00FF77;
Font.Color:=$00FF77;
FillRect(Rect);
TextOut(Rect.Left+2,Rect.Top+2,Column.Field.Text);
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;
end; |
|
#6
|
||||
|
||||
|
Цитата:
|
| Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
Red_Garry (18.10.2016)
| ||
|
#7
|
||||
|
||||
|
Гарри, дружище, есть много людей кто хочет покрасить ячейки сетки, и есть мало людей из тех кто понимает как это сделать. Именно поэтому у программистов такие зарплаты.
В сетке базы у тебя есть: колонка (поле) и его значение. Вот и танцуй от него. Однако нельзя забывать о тех кто не попал в твой окрас, их тоже нарисуй, будь так добр. |
|
#8
|
|||
|
|||
|
Спасибо! Работает!....
|