Подсветка определенных строк в dbgrib
Модератор: Модераторы
Подсветка определенных строк в dbgrib
Задача такова: нужно подсветить другим цветом строку в dbgrid, одно из полей в которой принимает определенное значение. Бился сначала сам, не получилось, решения, что предлагаются в инете для Delphi не работают.
- dunin
- энтузиаст
- Сообщения: 634
- Зарегистрирован: 02.05.2007 13:18:11
- Откуда: Тољя††и
- Контактная информация:
Угу. Есть такое.
Подсветка строк перебивается свойствами грида Color и AlternateColor. А вот колонки подсвечиваются нормально.
Для себя определил как решение - подсвечивать шрифт.
Подсветка строк перебивается свойствами грида Color и AlternateColor. А вот колонки подсвечиваются нормально.
Для себя определил как решение - подсвечивать шрифт.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
dunin
Чего то не получается у меня, можешь пример кода выложить?
Чего то не получается у меня, можешь пример кода выложить?
- dunin
- энтузиаст
- Сообщения: 634
- Зарегистрирован: 02.05.2007 13:18:11
- Откуда: Тољя††и
- Контактная информация:
Код: Выделить всё
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;как-то так...
а колонку крашу по клику на заголовке
Код: Выделить всё
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
Спасибо, в целом принцип уяснил
Спасибо, в целом принцип уяснил
