Подсветка определенных строк в dbgrib

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Подсветка определенных строк в dbgrib

Сообщение WAYFARER » 08.06.2010 21:08:29

Задача такова: нужно подсветить другим цветом строку в dbgrid, одно из полей в которой принимает определенное значение. Бился сначала сам, не получилось, решения, что предлагаются в инете для Delphi не работают.
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 537
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Re: Подсветка определенных строк в dbgrib

Сообщение dunin » 08.06.2010 21:53:39

Угу. Есть такое.
Подсветка строк перебивается свойствами грида Color и AlternateColor. А вот колонки подсвечиваются нормально.
Для себя определил как решение - подсвечивать шрифт.
1.jpg
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и

Re: Подсветка определенных строк в dbgrib

Сообщение WAYFARER » 09.06.2010 13:57:44

dunin
Чего то не получается у меня, можешь пример кода выложить?
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 537
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Re: Подсветка определенных строк в dbgrib

Сообщение dunin » 09.06.2010 16:28:07

Код: Выделить всё
var // опции программы
  ClrG1      : tColor = clWindow;
  ClrG2      : tColor = clInfoBk;
  ClrGSort   : tColor = clBtnFace;
  ClrGPodsvet: tColor = clRed;
  Podsvet    : boolean = True;
  PodsvetM   : integer = 5;
...

procedure TFulForm.DataGridDrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
  var HoldColor: TColor;
begin
HoldColor := tRxDBGrid(Sender).Canvas.Font.Color;
if (not (gdFocused in State)) and (not (gdSelected in State))
  then begin
...
      if Podsvet and (MainForm.iFulData.FieldByName('PLATA').AsFloat >= PodsvetM) then tRxDBGrid(Sender).Canvas.Font.Color := ClrGPodsvet; //clRed;
      if (Column.FieldName='AUD_MINUT') or (Column.FieldName='AUD_PLATA')  then tRxDBGrid(Sender).Canvas.Font.Color := clGrayText;
...
end; // if (not (gdFocused in State))
tRxDBGrid(Sender).DefaultDrawColumnCell (Rect, DataCol, Column, State);
tRxDBGrid(Sender).Canvas.Font.Color := HoldColor;
end;

как-то так... :roll:
а колонку крашу по клику на заголовке
Код: Выделить всё
procedure TMainForm.GridTitleClick(Column: TColumn; Real: boolean = True);
  var i: integer;
    //NomerForSort: byte;
begin
if (Column = nil) then exit;

  for i:= 0 to tRxDBGrid(Column.Grid).Columns.Count-1
    do tRxDBGrid(Column.Grid).Columns[i].Color:= ClrG1;

  Column.Color:= ClrGSort;

  if Real then...
...
Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и

Re: Подсветка определенных строк в dbgrib

Сообщение WAYFARER » 10.06.2010 15:06:00

dunin
Спасибо, в целом принцип уяснил
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 537
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 48

Рейтинг@Mail.ru