在DBGrid中当选中一条记录,当单击是这条记录会加颜色区别,其他的记录的颜色不变,请问用代码怎样去实现?当选中下一条是也会变,而且上面的那条记录的颜色也不会变,没有选中的记录就不会变。各位请帮帮忙,这里我就谢谢先了

解决方案 »

  1.   

    Options的dgRowSelect设成True
    OnDrawColumnCell事件写:
    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
     with DBGrid1 do
       begin
       if gdSelected in State  then
         Canvas.Brush.Color:=clRed
       else
         Canvas.Brush.Color:=clWhite;
       Canvas.FillRect(Rect);
       DefaultDrawColumnCell(Rect,DataCol,Column,State);
      end;
    end;
      

  2.   

    Options的dgRowSelect设成True就可以了啊
      

  3.   

    为列上色
      第一种是最容易的一类上色,最直接的让你的用户看到,为TDBGrid中指定的某一列上色。
      我们采用的方法是通过TDBGrid的TColumns属性来完成。步骤如下:  用鼠标选择Form上的TDBGrid组件,在Object Inspector中双击TDBGrid的Columns属性打开Columns编辑窗口。(想了解更多内容查阅Delphi帮助中的“Columns editor: creating persistent columns”主题。)
      下面你所要做的就是指定你需要改变颜色的那一行或几行的背景颜色,如果你要改变字体颜色,就将Font属性集中的Color属性修改一下。为行上色
      第1种 如果你想要为TDBGrid中所选的某一格或某些格指定颜色,而且你不想使用dgRowSelect选项,因为你想让TDBGrid可以直接在TDBGrid单元格中编辑数据,你应该使用TDBGrid的OnDrawColumnCell事件。  下面我们用到的技巧可以动态改变TDBGrid中的单元格文本的颜色。  代码如下:procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
     if Table1.FieldByName(’Salary’).AsCurrency>36000 then
      //指定所需改变颜色行的条件表达式
      DBGrid1.Canvas.Font.Color:=clMaroon;
      //指定颜色为clMaroon
      DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
    end;
    上述代码执行的功能是:把薪水超过3万6千元的员工(employee)记录字体颜色用栗色(Maroon)标出来。
     第2种 如何动态改变TDBGrid中行的颜色,代码如下:
    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
     if Table1.FieldByName(’Salary’).AsCurrency>36000 then
      DBGrid1.Canvas.Brush.Color:=clWhite;
      DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
    end; 
    上述代码执行的功能是:把薪水超过3万6千元的员工(employee)记录背景用白色(White)标出来。
      

  4.   

    Options的dgRowSelect设成True就可以了啊
    这个是最简单的
      

  5.   

    Options的dgRowSelect设成True就可以了啊
      

  6.   

    在OnDrawColumnCell事件里,根据你条件来改变Canvas.Brush.Color就可以了