rt

解决方案 »

  1.   

    你可以根据条件判断然后修改DBGrid.Canvas.color就可以了,写在OnDrawColumnCell事件中!
      

  2.   

    我理解的楼主意思是不select的时候就已经将颜色显示出来了
    这怎么写....
      

  3.   

    microjuz(天才弟弟) :你认为楼主是需要将所有的记录比如都按照奇偶行分颜色显示,是吗?
    如果是这样可能需要改写dbgrid控件!我做过这种事,当时就是改控件的!
      

  4.   

    楼上各位大虾,我的意思是dbgrid显示数据的时候,根据某一列(如flag列)的数据(如A、B、C
    )行显示不同的颜色,谁有这方面的代码,请发至[email protected],一定给分!
      

  5.   

    redhf(农民的儿子)大虾,你是否有DBGrid按照奇偶行分颜色显示的代码,有的话,发给我一份,发了给分,或者先给分再发,Email:[email protected]
      

  6.   

    双击dbgrid, 选中列,改color选项。  ok
      

  7.   

    procedure TDbgridForm.DBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin
      with DBGrid1 do
      begin
       if ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) then
        begin
         Canvas.Font.Color :=ClYellow;
         Canvas.Brush.Color :=ClNavy;
        end
        else
        begin
          if  DataSource1.DataSet.RecNo mod 2<>0 then {判断当前数据是奇数还是偶数行}
            Canvas.brush.Color :=ClWhite        {如果是奇数行,DBGrid背景以白色显示}
          else
            Canvas.brush.Color :=clgreen;         //$00EAEAEA;      {如果是偶数行,DBGrid背景以浅灰色显示}
        end;
        DefaultDrawColumnCell(Rect, DataCol, Column, State); {这行很关键的,一定不要遗漏了}
      end;
    end;
      

  8.   

    redhf(农民的儿子) 别卖官司了把代码贴出来 共享一下
    study
      

  9.   

    procedure Tfrm_khxsbb.DBGrid1DrawDataCell(Sender: TObject;
      const Rect: TRect; Field: TField; State: TGridDrawState);
    begin
     if field.Asstring='总计' then DBGrid1.Canvas.Font.Color := clRed
     else
      if pos('合计',field.Asstring)>0 then
       DBGrid1.Canvas.Font.Color := clBlue
      else
       DBGrid1.Canvas.Font.Color := clBlack;
     setbkcolor(DBGrid1.canvas.handle,clwhite);
     DBGrid1.Canvas.TextRect(rect,0,0,field.AsString);
     DBGrid1.Canvas.Textout(rect.Left,rect.Top,field.AsString);end;