我想更改DBGrid
事件OnCellClick
中所点击行的颜色,并保存此网格状态直到下一个OnCellClick
事件 - 而不是另一行有人知道我怎么能做到这一点吗?
答案 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的条目,你应该选择另一个属性,这对于每一行都是不对的。