再问个:我想将‘订单’表中的记录,按‘客户号’归来,比如:
常州XX公司 DD0001
常州XX公司 DD0002
常州XX公司 DD0003
常州XX公司 DD0004
常州XX公司 DD0005
无锡YY公司 DD0006
无锡YY公司 DD0007
无锡YY公司 DD0008
苏州ZZ公司 DD0010
.....
并在DBGRID中显示成间隔颜色,是常州XX公司 DD0001
常州XX公司 DD0002
常州XX公司 DD0003
常州XX公司 DD0004
常州XX公司 DD0005
这5条记录显示成白色
无锡YY公司 DD0006
无锡YY公司 DD0007
无锡YY公司 DD0008
这3条记录显示成红色
苏州ZZ公司 DD0010
这1条记录又显示成白色
..... 程序应怎样写呢?3Q

解决方案 »

  1.   

    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin                                       //这里可以自定义等于什么;
      if ADOtable1.fieldbyname('id').asstring = dbedit1.text then
        dbgrid1.canvas.font.color := clRed;//这里可以改变颜色。
      dbgrid1.defaultdrawcolumncell(rect, datacol, column, state);
    end;
      

  2.   

    1.建立一个类型为Tcolor的动态数组a
    2.设置其长度为dataset的记录数
    3.计算每一条记录的显示颜色存入该数组
    4.在dbgrid的ondrawdatacell(不能是ondrawcolumncell)写上dbgrid1.canvas.font.color:=a[dbgrid1.datasource.dataset.recno()]  //设字体色 或
    dbgrid1.canvas.brush.color:=a[dbgrid1.datasource.dataset.recno()]  //设背景色 DBGrid1.DefaultDrawDataCell(Rect, Field, State);
      

  3.   

    参见 http://blog.csdn.net/xudunyu/archive/2004/12/16/xudunyu001.aspx