在OnCellClick事件之后更改DBGrid中行的颜色

时间:2014-08-11 18:14:54

标签: delphi colors dbgrid

我想更改DBGrid事件OnCellClick中所点击行的颜色,并保存此网格状态直到下一个OnCellClick事件 - 而不是另一行有人知道我怎么能做到这一点吗?

1 个答案:

答案 0 :(得分:1)

嗯,在OnCellClick内编码渲染将是一个糟糕的决定。 基本上在OnCellClick中,您只需要保存选定的RecNo即可。像这样:

procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
  tag:=DBGrid1.SelectedField.DataSet.RecNo;
end;

然后你需要像这样修改OnDrawDataCell func:

procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;  Field: TField; State: TGridDrawState);
begin
  if(Field.DataSet.RecNo=tag)then begin
    DBGrid1.Canvas.Brush.Color:=clYellow;
    DBGrid1.Canvas.Font.Color:=clNavy;
  end else begin
    DBGrid1.Canvas.Brush.Color:=clWhite;
    DBGrid1.Canvas.Font.Color:=clRed;
  end;
  DBGrid1.Canvas.FillRect(Rect);
  DBGrid1.DefaultDrawDataCell(Rect, Field, State);
end;

P.S。如果你有多个具有相同RecNo的条目,你应该选择另一个属性,这对于每一行都是不对的。