有点麻烦
要在DBGird的OnDrawColumnCell事件中写代码,自己控制颜色

解决方案 »

  1.   

    CSDN里有很多关于这个问题的帖子,找一下吧
      

  2.   

    千灯,能不能说的详细点?我知道是在那个里面写代码,可是我怎么才能得到我想画的的那个条形区域的Rect?要是能有代码就好了:)
    小新国际:帮忙帮到底么:)呵呵,分数肯定少不了的:)
      

  3.   

    我今天中午刚问过一个类似的问题。
    不过我的是不用鼠标点击,窗体出来的时候直接改变某一列的颜色
    你看一下,能不能帮上忙
    procedure Tfrmclerktable.StringGrid1DrawCell(Sender: TObject; ACol,
      ARow: Integer; Rect: TRect; State: TGridDrawState);
      begin
      if (acol = 6) and(arow >0)or (acol >7) and(arow >0) then
      begin
      StringGrid1.Canvas.Brush.Color := clinfobk;
      StringGrid1.Canvas.pen.Color := StringGrid1.Font.Color ;
      StringGrid1.canvas.fillRect(rect);
      StringGrid1.Canvas.textout(rect.left+1,rect.Top ,StringGrid1.cells[acol,arow]);
      end;
      end;
      

  4.   

    OnDrawColumnCell事件中的Rect参数就是你想画的的那个条形区域的Rect
     dbgird1.canvas.Brush.Color := clRed;
        dbgird1.canvas.FillRect(rect);
      

  5.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, Grids, DBGrids, Db, DBTables;type
      TForm1 = class(TForm)
        ComboBox1: TComboBox;
        Button1: TButton;
        DBGrid1: TDBGrid;
        Table1: TTable;
        DataSource1: TDataSource;
        procedure DBGrid1CellClick(Column: TColumn);
        procedure DBGrid1TitleClick(Column: TColumn);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      FColumn: TColumn ;implementation{$R *.DFM}procedure TForm1.DBGrid1CellClick(Column: TColumn);
    begin   if FColumn <> nil then FColumn.Color := clwhite ;
       FColumn:= Column ;
       Column.Color := clred ;
    end;procedure TForm1.DBGrid1TitleClick(Column: TColumn);
    begin
       if FColumn <> nil then FColumn.Color := clwhite ;
       FColumn:= Column ;   column.Color := clred ;
    end;end.看一下吧,能完成
    还有,看一下ehlib这个包吧
      

  6.   

    to : kuangning(郎之间,穷人) 
     呵呵
    大哥也来了,那小弟就不献丑了!!
    to ruolink(诸葛若云) 
    有什么快问楼上的大哥把
      

  7.   

    不好意思看错题目了
    这样能行吗?
    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
          if gdSelected in state   then
          begin
            DBGrid1.canvas.Brush.Color := clred ;
          end ;
          DBGrid1.DefaultDrawColumnCell (rect,datacol,column,state );
    end;
      

  8.   

    const Rect: TRect; Field: TField; State: TGridDrawState);begin
      if Table1.FieldByName('Size').AsFloat > 10 then
        DBGrid1.Canvas.Font.Color := clRed;
      DBGrid1.DefaultDrawDataCell(Rect, Field, State);
    end;
      

  9.   

    都可以,但如果你是要按记录集中某字段来标上不同的颜色的话,可以:procedure TfrmTemp.DG_temprawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
         if QryPD.fieldbyname('a').Asfloat<0 then
              with (Sender as TDBGrid).Canvas do
                 begin
                   Brush.Color := RGB(254,163,181);
                   FillRect(Rect);
                   TextOut(Rect.Left, Rect.Top, Column.Field.AsString);
                 end
          else if QryPD.fieldbyname('a').Asfloat>0 then
              with (Sender as TDBGrid).Canvas do
                 begin
                   Brush.Color := RGB(186,221,185);
                   FillRect(Rect);
                   TextOut(Rect.Left, Rect.Top, Column.Field.AsString);
                 end
    end;