记录有重复的,如何让产品名称一样的背景色一样

解决方案 »

  1.   

    改一下条件就行,这里的是奇偶行的着色...
    //   在OnDrawColumnCell事件中   
      procedure   TForm1.DBGridEh1DrawColumnCell(Sender:   TObject;   
          const   Rect:   TRect;   DataCol:   Integer;   Column:   TColumnEh;   
          State:   TGridDrawState);   
      begin   
          with   DBGridEh1.Canvas   do   
          if   (DBGridEh1.MouseCoord(Rect.Left+1,   Rect.Top+1).Y   mod   2)   =   1   then   
              Brush.Color   :=   clBlue     //   奇数行红色   
          else   
              Brush.Color   :=   clRed;     //   偶数行为蓝色   
          DBGridEh1.DefaultDrawColumnCell(Rect,   DataCol,   Column,   State);   
      end;   
      //   在相对应的Query的AfterScroll事件中   
      procedure   TForm1.Query1AfterScroll(DataSet:   TDataSet);   
      begin   
          DBGridEh1.Invalidate;     //   滚动时刷新grid   
      end;   
      

  2.   

    procedure TFrom1.FondGrdDrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumnEh;
      State: TGridDrawState);
    const
      ArrColor: array[0..5] of TColor =
      (clRed,
        clBlue,
        clGreen,
        clGray,
        clYellow,
        clSilver);
    var
      i: Integer;
    begin
      i := FondGrd.datasource.dataset.FieldByName('type').AsInteger; 
    //i  --- 颜色标地,根据这个选择颜色 和品牌名效果一样。
      if InRange(i, 0, 5) then
        FondGrd.Canvas.Brush.Color := ArrColor[i]
      else
        FondGrd.Canvas.Brush.Color := clBlack;
      FondGrd.DefaultDrawColumnCell(Rect, DataCol, Column, State);
    end;