无名兄,到底怎么写呀??
我在ondraw下写
  while not cdslist.Eof do
  begin
    if cdslist.FieldByName('djhm').asString='200112190002' then
    begin
      Acolumn:=dbgGriddjhm;
      Acolor:=clRed;
    end;
    cdslist.next;
  end;
结果没反应

解决方案 »

  1.   

    设置Dbgrid的DBGrid1DrawDataCell事件中添加如下代码:dbgrid1.Canvas.Font.Color:=clgreen;
      if gdSelected in state then
        SetBkColor(dbgrid1.canvas.handle,clred)
      else
        setbkcolor(dbgrid1.canvas.handle,clwhite);
    dbgrid1.Canvas.TextRect(rect,0,0,field.AsString);
    dbgrid1.Canvas.Textout(rect.Left,rect.Top,field.AsString);
      

  2.   

    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
     if Column.Field.DisplayText='200112190002' then
     begin
      DBGrid1.Canvas.Brush.Color:=clRed;
      DBGrid1.Canvas.Brush.Style:=bsSolid;
      DBGrid1.Canvas.FillRect(Rect);
      DBGrid1.Canvas.TextOut(Rect.Left,Rect.Top,Column.Field.DisplayText);
     end;
    end;
    我上次做过一次,好像不用这么复杂,我一时也想不起来了,也没有时间去想了,你就将就一点吧,呵呵
      

  3.   

    我用的是dxDBGrid, 属性和方法相差很大的
    procedure Tfrmqylycx.dbgGridCustomDrawCell(Sender: TObject;
      ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode;
      AColumn: TdxTreeListColumn; ASelected, AFocused, ANewItemRow: Boolean;
      var AText: String; var AColor: TColor; AFont: TFont;
      var AAlignment: TAlignment; var ADone: Boolean);
    begin
      if AColumn.AssignedValues='200112210002' then
      begin
        dbgGrid.Canvas.Brush.Color:=clRed;
        dbgGrid.Canvas.Brush.Style:=bsSolid;
        dbgGrid.Canvas.FillRect(Rect);
        dbgGrid.Canvas.TextOut(Rect.Left,Rect.Top,Column.Field.DisplayText);
      end;
    end;
    上面是我写的,错误百出!!
      

  4.   

    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect:TRect;DataCol: Integer; Column: TColumn; State: TGridDrawState);beginif Table1.FieldByName('Population').AsInteger > 20000000 thenDBGrid1.Canvas.Font.Color := clBlue;DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);end;
      

  5.   

    拜托,人家用的是dxDBGrid。不是DBGrid.
    我这两天也在用,感觉也是不太明了,它带的Demo可以看一下,好像有一个例子有这个功能。
      

  6.   

      if ADOQuery1.Active=true then
      if ADOQuery1.RecNo mod 2=0 then
      acolor:=$00BFE4E2 else
      acolor:=$00E3FBFB;
    在dxdbgrid的oncustomdrawcell中
      

  7.   

    在dxdbgrid的oncustomdrawcell中 
    try
        with TColorDbgrid(sender) do
        begin
          if DataLink.ActiveRecord = Row - 1 then
            Canvas.Brush.Color := clinfobk;
          with DbG.DataSource.DataSet do
          begin        if (cb.text = '清算结果') or (cb.text = '证券库存') or (cb.text =
              '证券流水') then
            begin
              if (FieldByName('Gddm').asstring = '') or (FieldByName('zqdm').asstring
                =
                '') or (FieldByName('Gddm').isnull) or (FieldByName('zqdm').isnull)
                or (pos(FieldByName('zqdm').asstring, StrErrZqdm) <> 0) then
                Canvas.Font.Color := clred;
            end;
            if (cb.text = '资金帐户') or (cb.text = '资金流水') or (cb.text =
              '清算结果') then
              if (FieldByName('zjzh').asstring = '') then
                Canvas.Font.Color := clred;      end;
          DefaultDrawColumnCell(Rect, DataCol, Column, State);
        end;
      except on e: exception do
          showMessage(e.Message);
      end;
    其他的自己看看,不难了,我前天刚做的,