如何改变DBGrid1和StringGrid1中单独一行的背景色?

解决方案 »

  1.   

    ListView:
    void __fastcall TfrmMain::lvOperatorsCustomDrawItem(
          TCustomListView *Sender, TListItem *Item, TCustomDrawState State,
          bool &DefaultDraw)
    {
       if(Item->Index % 2)
         lvOperators->Canvas->Brush->Color=(TColor)RGB(183,203,249);}
      

  2.   

    StringGrid:
    procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    begin
      if (ARow mod 2)=1 then
        StringGrid1.Canvas.Brush.Color := clRed
      else StringGrid1.Canvas.Brush.Color := clWhite;
      StringGrid1.Canvas.Rectangle(Rect);
    end;ListView:
    ListView1.OwnerDraw := true;procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
      Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
    begin
      if (Item.Index mod 2)=1 then
        ListView1.Canvas.Brush.Color:= clRed
      else ListView1.Canvas.Brush.Color:= clBlue;
    end;
      

  3.   

    在dbgrid的drawdatacell事件中:
    dbgrid1.canvas.font.color:=颜色1;//设置记录的字体颜色
    if gdselected in state then  //如果该记录被选中
      setbkcolor(dbgrid1.canvas.handle,颜色2)
    //将该记录加亮显示
    else
      setbkcolor(dbgrid1.canvas.handle,颜色3);
    //设dbgrid的背景色
    dbgrid1.canvas.textrect(rect,0,0,field.asstring);
    dbgrid1.canvas.textout(rect,left,rect,top,field.asstring);
    //设置颜色区域
      

  4.   

    借问一下,这样能达到改背景色的目的了,不过看不见字啊。字的颜色怎么改procedure TForm1.ListView1DrawItem(Sender: TCustomListView;
      Item: TListItem; Rect: TRect; State: TOwnerDrawState);
    begin
     if  item.Index mod 2 = 1 then
     begin
       listview1.Canvas.brush.Color := tcolor(rgb(255,111,0));;
     end
     else
     begin
       listview1.canvas.brush.Color := clblue;
       end;
          listview1.Canvas.Rectangle( rect);
    end;
      

  5.   


    在Delphi中随意控制DBGrid每一行的颜色  
    有个问题是在Delphi中使用DBGrid时,如何让DBGrid中每一行颜色按照用户自己的意愿控制。
    最初看到这个问题时,我们以为非常非常简单,所以马上动手准备解决它。
    结果却发现不是那么回事,传统方法根本不能发挥作用。在电脑面前一直坐到凌晨4点,
    不断地调试,幸运地是凭借平时积累的一点编程经验,终于找到了开门的匙钥。
    现将它充公,供大家享用。1、 数据表的建立2、程序设置;
    procedure Tinfo.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
        if query1.FieldByName(’all’).asstring>40 then
          begin
             dbgrid1.Canvas.Font.Color:=clred;
             dbgrid1.Canvas.Brush.color:=clyellow;
          end
          else
          begin
             dbgrid1.Canvas.Font.Color:=clblue;
             dbgrid1.Canvas.Brush.color:=clyellow;
          end;
        dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);
    end;
    ****************************
    *Second
    if (ADOTable1.RecNo mod 5)=0 then
            dbGrid1.Canvas.Brush.Color:=clred
       else
            dbGrid1.canvas.Brush.Color:=clblue;
       dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);