|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Окраска ячейки DBGrid в зависимости от её содержимого
Здравствуйте!
Ввёл тему поста в поисковую строку и то, что получил в ответ, меня не удовлетворило... Блин, не могу разобраться. Добрые люди! Задача такая: Поля базы, на которую завязан 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
|
|||
|
|||
Окраска ячейки DBGrid в зависимости от её содержимого
Спасибо за ответ! Только указанный код красит всю строку
|
#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
|
|||
|
|||
Спасибо! Работает!....
|