在双击事件中加入代码:
  dbgrid1.canvas.font.color:=clRed;

解决方案 »

  1.   

    老兄,碰上我你死定了^-^,我刚研究过这个问题
    先定义一公用变量CurrNo,用来记录被双击的记录的记录号,
    然后在dbGrid的DrawColumnCell事件中实现字体,颜色等的改变.
    var currNo
    //////////////
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    currno:=-1;
    end;//////////////
    procedure TForm1.DBGrid1DblClick(Sender: TObject);
    begin
    currno:=adodataset1.RecNo ;
    dbgrid1.Refresh ;
    end;
    //////////
    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
    if adodataset1.RecNo =currno then
      begin
        dbgrid1.Canvas.Brush.color:=clyellow;
        dbgrid1.Canvas.pen.mode:=pmmask;
        dbgrid1.DefaultDrawColumnCell
        (Rect, DataCol, Column, State);
      end;
    end;
      

  2.   

    1. 纵向斑马线效果:实现网格的奇数列和偶数列分别以不同的颜色显示,以区别相邻的数据列。  file://在DbGrid的DrawColumnCell事件中编写如下代码:  Case DataCol Mod 2 = 0 of   True: DbGrid1.Canvas.Brush.Color:= clBlue; file://偶数列用蓝色   False: DbGrid1.Canvas.Brush.Color:= clAqua; file://奇数列用浅绿色  End;  DbGrid1.Canvas.Pen.Mode:=pmMask;  DbGrid1.DefaultDrawColumnCell (Rect, DataCol, Column, State);
    2. 纵向斑马线,同时以红色突出显示当前单元格效果:以突出显示当前选中的字段。 
      file://将上述代码修改为:  Case DataCol Mod 2 = 0 of   True: DbGrid1.Canvas.Brush.Color:= clBlue; file://偶数列用蓝色   False: DbGrid1.Canvas.Brush.Color:= clAqua; file://奇数列用浅绿色  End;  If ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) then    If Not DbGrid1.SelectedRows.CurrentRowSelected then      DbGrid1.Canvas.Brush.Color:=clRed; file://当前选中单元格显示红色       DbGrid1.Canvas.Pen.Mode:=pmMask;      DbGrid1.DefaultDrawColumnCell (Rect, DataCol, Column, State);上述两种方法突出了列的显示效果。  3.在数据网格中以红色突出显示当前选中的行。  设置DbGrid控件的Options属性中的dgRowSelect属性为真,Color属性为clAqua(背景色), 在DbGrid的DrawColumnCell事件中编写如下代码:  if ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) then   DbGrid1.Canvas.Brush.color:=clRed; file://当前行以红色显示,其它行使用背景的浅绿色   DbGrid1.Canvas.pen.mode:=pmmask;   DbGrid1.DefaultDrawColumnCell (Rect, DataCol, Column, State);  4.行突显的斑马线效果:既突出当前行,又区分不同的列(字段)。  file://其它属性设置同3,将上述代码修改为:  if ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) then   begin    Case DataCol Mod 2 = 0 of     True : DbGrid1.Canvas.Brush.color:=clRed; file://当前选中行的偶数列显示红色     False: DbGrid1.Canvas.Brush.color:=clblue; file://当前选中行的奇数列显示蓝色    end;   DbGrid1.Canvas.pen.mode:=pmmask;   DbGrid1.DefaultDrawColumnCell (Rect, DataCol, Column, State);  end;  5.横向斑马线, 同时以红色突显当前行效果。 
      file://其它属性设置同3,将上述代码修改为:  Case Table1.RecNo mod 2 = 0 of file://根据数据集的记录号进行判断   True : DbGrid1.Canvas.Brush.color:=clAqua; file://偶数行用浅绿色显示   False: DbGrid1.Canvas.Brush.color:=clblue; file://奇数行用蓝色表示  end;  if ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) then file://选中行用红色显示   DbGrid1.Canvas.Brush.color:=clRed;   DbGrid1.Canvas.pen.mode:=pmMask;   DbGrid1.DefaultDrawColumnCell (Rect, DataCol, Column, State);  6.双向斑马线效果:即行间用不同色区分,同时,选中行以纵向斑马线效果区分不同的列。  file://其它属性设置同3,将上述代码修改为:  Case Table1.RecNo mod 2 = 0 of file://根据数据集的记录号进行判断   True : DbGrid1.Canvas.Brush.color:=clAqua; file://偶数行用浅绿色显示   False: DbGrid1.Canvas.Brush.color:= clblue; file://奇数行用蓝色表示  end;  If ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) then  Case DataCol mod 2 = 0 of   True : DbGrid1.Canvas.Brush.color:=clRed; file://当前选中行的偶数列用红色   False: DbGrid1.Canvas.Brush.color:= clGreen; file://当前选中行的奇数列用绿色表示  end;  DbGrid1.Canvas.pen.mode:=pmMask;  DbGrid1.DefaultDrawColumnCell (Rect, DataCol, Column, State);
      

  3.   

    是这样的,如果按照 eagle123(孤独的鹰) 所说的话,他不会保留原先
    所做的修改,也就是说我要求能够保留原先所做的修改,这样做可以吗?
    该怎么来设计代码呢?谢谢!
    如何保留原先改变所得的效果,不会被后面的改变刷新?