如何突出显示DBGrid单元格?

时间:2012-10-30 14:18:29

标签: delphi

我正在尝试以编程方式突出显示TDBGrid后代中的当前单元格。如果我执行DBGrid.SetFocus,我会得到下面的组合框箭头,这对我来说没有充分突出显示。

编辑:

我已经在做DBGrid.SelectedField:= DataSource.FieldByName('Name');

为了让用户更多地关注相关区域,我设置了:

DBGrid.Columns[x].Title.Font.Style := [fsbold, fsunderline];  

我设置了一个计时器,在五秒钟之后:

DBGrid.Columns[x].Title.Font.Style := [];

奇怪的是,在时间结束后,细胞变成蓝色(如下所示。)这是我想要的亮点。但我对网格不太了解知道如何直接得到它。

我的问题:如何在下面的蓝色示例中突出显示网格单元格?我之前从未做过这样的事情,所以我有点失落。这是一个InPlaceEditor函数吗?

我正在使用TDBGrid的后代,所以我不确定我所看到的行为是否是TDBGrid固有的,或者仅仅是后代(在这种情况下我知道我的问题在这里无法解答)。 )

Two controls

1 个答案:

答案 0 :(得分:4)

我一直在使用DBGrid: OnDrawColumnCell事件使用以下内容(D2007)。

procedure TForm1.DBGridDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin 
  //Make the column blue if the title is bold
  if (fsBold in Column.Title.Font.Style) then
    TDBGrid(Sender).Canvas.Brush.Color := $00fff0e1;

  //Set the selected row to white/bold text on blue background
  if (gdSelected in State) then
    begin
      TDBGrid(Sender).Canvas.Brush.Color := clHighlight;
      TDBGrid(Sender).Canvas.Font.Style := Font.Style + [fsBold];
      TDBGrid(Sender).Canvas.Font.Color := clHighlightText;
    end;

  //Update the grid
  TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;