С TMS TDBAdvGrid, как закрасить линии разными цветами в зависимости от значений ячеек? - PullRequest
0 голосов
/ 18 августа 2011

Все в названии. Как мы можем также сделать офисный совет настраиваемым для каждой строки. Значение означает, что при перемещении мыши по строке отображается информация об этой записи (из запроса базы данных).

Спасибо

Ответы [ 2 ]

0 голосов
/ 19 августа 2011

Альтернативой ответу Генриха является использование события OnGetCellColor.

Это можно использовать так:

procedure TDBAdvGrid.DBGridGetCellColor(Sender: TObject; ARow,
  ACol: Integer; AState: TGridDrawState; ABrush: TBrush; AFont: TFont);
begin
     if (your condition) then ABrush.Color := clRed;
end;

Аналогично для подсказки:

procedure TDBAdvGrid.DBGridGridHint(Sender: TObject; ARow, ACol: Integer;
  var hintstr: String);
begin
    hintstr := 'your hint text';
end;
0 голосов
/ 18 августа 2011

Вы можете покрасить отдельные ячейки, используя свойство CellProperties сетки. Вы можете использовать это, чтобы раскрасить всю строку:

var
  RowIndex: Integer;
  ColIndex: Integer;

with MyDBAdvGrid do
begin
  // you choose the row index; you may want to iterate all rows to 
  // color each of them
  RowIndex := 2;
  // now iterate all (non-fixed, visible) cells in the row and color each cell
  for ColIndex := FixedCols to ColCount - 1 do
  begin
    CellProperties[ColIndex, RowIndex].BrushColor := clYellow;
    CellProperties[ColIndex, RowIndex].FontColor := clGreen;
  end;
end;

Чтобы заполнить подсказку вашего офиса данными записи, я бы предложил обновить ее, когда пользователь перемещает мышь. Используйте функцию MouseToCell, чтобы получить строку и столбец под мышью, затем используйте MyDBAdvGrid.AllCells[ColIndex, RowIndex] для доступа к содержимому ячейки.

...