现在stringgrid里面已经有数据了.
我需要选择一条记录,改变该行其颜色,
再选择一条记录,也改变其颜色.
这样我就可以来分辨那些已经选择过了。.
可是我遇到问题是1:怎么改变行的颜色.
2:怎么知道当前行是什么颜色
3:在第二次改变颜色的时候,原来已经改变的颜色不会消失

解决方案 »

  1.   

    用ADvstringgrid控件就可以了
    ADvstringgrid.rowcolor[1]:=clRed
      

  2.   

    http://dev.csdn.net/article/56/article/49/49723.shtm
      

  3.   

    onmousedown()
    ondrawcell()
      s := (Sender AS TStringGrid).Cells[acol,arow];
      (Sender AS TStringGrid).Canvas.Font.Color := clBlack;    If (Rect.Top<currenty) and (currenty<Rect.Bottom) Then
            (Sender AS TStringGrid).Canvas.Brush.Color :=rgb(167,221,198);
        else
            (Sender AS TStringGrid).Canvas.Brush.Color := clWhite;
        End;  (Sender AS TStringGrid).Canvas.FillRect(Rect);
      (Sender AS TStringGrid).Canvas.TextOut(0,0,s);
      

  4.   

    先定义下面一个类:
    type TMyGrid=class(TStringGrid)
     end;假设该grid叫 StringGrid1 ,它的DefaultDrawing属性必须为true
    写它的OnDrawCell事件:if(ARow=2)and(ACol>0)then  //将第2行的背景变成红色
      begin
      StringGrid1.Canvas.Brush.Color:=clRed;
      StringGrid1.Canvas.FillRect(Rect);    //画红色
      StringGrid1.OnDrawCell:=nil;  //设置为nil,下面就不会无限递归
      try                           
        TMyGrid(StringGrid1).DrawCell(ACol,ARow,Rect,State);
       finally
        StringGrid1.OnDrawCell:=StringGrid1DrawCell; //恢复事件的地址
       end;
      end;
      

  5.   

    同意   lzy6204(为了忘却的记忆) ( ) 
      

  6.   

    我是这样做的:只是用BCB,稍作修改即可。分那来! 
    void __fastcall Tfrm_Repaired::DBGrid1DrawColumnCell(TObject *Sender,
          const TRect &Rect, int DataCol, TColumn *Column,
          TGridDrawState State)
    {if(qry_SBXFSQD->FieldByName("&Icirc;&not;&ETH;&THORN;&Egrave;&Euml;&Ocirc;±")->AsString == "")
    {
      DBGrid1->Canvas->Brush->Color = clSkyBlue;
      DBGrid1->Canvas->FillRect(Rect);
    }
    else
    {
      DBGrid1->Canvas->Brush->Color = clMoneyGreen;
      DBGrid1->Canvas->FillRect(Rect);
    }
    DrawText(DBGrid1->Canvas->Handle,
             Column->Field->Text.c_str(),
             -1,
             (RECT*)&Rect,
             DT_SINGLELINE | DT_VCENTER |DT_CENTER);
    }