使用TMS TDBAdvGrid,如何根据单元格值为不同颜色的线条着色?

时间:2011-08-18 09:30:57

标签: delphi tms

所有都在标题中。 我们怎样才能为每一行定制officehint。当鼠标移动到一行时,显示该记录的信息(来自数据库查询)。

由于

2 个答案:

答案 0 :(得分:0)

您可以使用网格的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]访问单元格内容。

答案 1 :(得分:0)

海因里希回答的替代方法是使用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;