请教 johnsonrao(johnson) 下面是我的代码,该如何改进?
 if query1.eof<>query1.bof then
   begin
      if (copy(query1.FieldByName('yname').value,length(query1.FieldByName('yname').value)-3,4)='小计') and (length(query1.FieldByName('yno').value)=7) then
        dbgrid1.Canvas.Brush.Color := clinfobk
      else if (copy(query1.FieldByName('yname').value,length(query1.FieldByName('yname').value)-3,4)='小计') and (length(query1.FieldByName('yno').value)=4) then
        dbgrid1.canvas.brush.color:=$00FEFED1
      else if (copy(query1.fieldbyname('yname').value,length(query1.FieldByName('yname').value)-3,4)='小计') and (length(query1.FieldByName('yno').value)=5) then
        dbgrid1.canvas.brush.color:=$00DEFCD6
      else if (copy(query1.fieldbyname('yname').value,length(query1.FieldByName('yname').value)-3,4)='小计') and (length(query1.FieldByName('yno').value)=3) then
        dbgrid1.canvas.brush.color:=$00FEEADA
      else if query1.fieldbyname('yname').value='成品油小计' then
        dbgrid1.canvas.brush.color:=$00DFE3FF
      else if query1.fieldbyname('yname').value='合计' then
        dbgrid1.canvas.brush.color:=$00FEE0FB;
        DBGrid1.DefaultDrawColumnCell(Rect, DataCol,Column, State);
    end;

解决方案 »

  1.   

    dbgrid的ondrawdatacell事件
    procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
      Field: TField; State: TGridDrawState);
    begin
         if 分数<60 then 
            begin
              dbgrid1.Canvas.Brush.Color := clred;
              dbgrid1.DefaultDrawDataCell(rect,field,state);
            end;
       
    end;
    再给你一个贴子:http://www.csdn.net/expert/topic/799/799818.xml?temp=.1489679
      

  2.   

    你把OnCellClick里面加上同样的用来改变颜色的代码
      

  3.   

    procedure TFGFrame.DBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin
      with (Sender as TDBGrid) do
      begin
        if ((State = [gdSelected]) or (State = [gdSelected, gdFocused])) then  //这里就是选定时的颜色
        begin
          Canvas.Font.Color := clHighlightText;
          Canvas.Brush.Color := clHighlight;
        end
        else
        begin
          if DataSource.DataSet.RecNo mod 2 <> 0 then
            Canvas.brush.Color := $00F2F2F2
          else
            Canvas.brush.Color := clWhite;
        end;
        DefaultDrawColumnCell(Rect, DataCol, Column, State); //这行是关键
      end;
    end;