我在form里用了一个DBGRID,并成功连上了数据库. 
在默认情况下我点击Dbgrid中的每行时,被点中的行立即以不同的颜色显示了.后来我改了它的一些属性,如下:
ParentBiDiMode  True
ParentColor     False
ParentCtl3D     flase
Parentfont      true
Parentshowhint  false
showhint        trueOptions中的如下:
dgEditing               false
dgAlwaysShowEditor      false
dgTitles                true
dgIndicator             false
dgColumnResize          false
dgColLines              true
dgRowlines              false
dgTabs                  true
dgRowSelect             true
dgAlwaysShowSelection   false
dgConfirmDelete         true
dgCancelOnExit          true
dgMultiSelect           False我还加了如下事件
procedure TfrmAccountList.dbListDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
  if adoqtype.RecNo mod 2 = 1 then
  begin
    dblist.Canvas.Brush.Color := clCream  ;
    dblist.Canvas.Font.Color:=clBlack ;
  end
  else begin
    dblist.Canvas.Brush.Color := clWhite;
    dblist.Canvas.Font.color:=clBlack;
  end;  dblist.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;  现在我就是想在点击后,被点中的行的颜色能和其它不一样.小弟愚昧,还望指教!

解决方案 »

  1.   

    是不是需要自己控制了?在onselect事件中控制
      

  2.   

    可以在DrawDataCell中处理
    procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
      Field: TField; State: TGridDrawState);
    begin
        根据State改变
        DBGrid1.Canvas.Brush.color
    end;
      

  3.   

    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
       if gdSelected in state  then
         // 被点中的行的颜色 设置
    end;
      

  4.   

    procedure TForm1.dblistDrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
      if gdSelected in state then
      begin
          dblist.Canvas.Brush.Color := clRed  ;
          dblist.Canvas.Font.Color:=clWhite ;
      end else
      begin
        if Table1.RecNo mod 2 = 1 then
        begin
          dblist.Canvas.Brush.Color := clGreen  ;
          dblist.Canvas.Font.Color:=clBlack ;
        end
        else begin
          dblist.Canvas.Brush.Color := clWhite;
          dblist.Canvas.Font.color:=clBlack;
        end;
      end;  dblist.DefaultDrawColumnCell(Rect, DataCol, Column, State);
    end;或者:procedure TForm1.dblistDrawDataCell(Sender: TObject; const Rect: TRect;
      Field: TField; State: TGridDrawState);
    begin
      if gdSelected in state then
      begin
          dblist.Canvas.Brush.Color := clRed  ;
          dblist.Canvas.Font.Color:=clWhite ;
      end else
      begin
        if Table1.RecNo mod 2 = 1 then
        begin
          dblist.Canvas.Brush.Color := clGreen  ;
          dblist.Canvas.Font.Color:=clBlack ;
        end
        else begin
          dblist.Canvas.Brush.Color := clWhite;
          dblist.Canvas.Font.color:=clBlack;
        end;
      end;  dblist.DefaultDrawDataCell(Rect, Field, State);
    end;
      

  5.   

    此两种方法收藏在 我的个人主页:
      http://usa.internations.net/luckyjan/
    下载:
      http://usa.internations.net/luckyjan/mySkills.html
      【第4行】(Delphi)若干常用技巧,下载