dxDBGrid如何设置满足条件的记录显示背景色为红色,谢谢!
例如库存小于0 的记录显示红色

解决方案 »

  1.   

    我没有用过
    在DBGRID中一般这么处理:
    procedure TFrmMain.DBMXDrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
      if CDSMX.FieldByName('shbz').AsString='1' then
      begin
        DBMX.Canvas.Font.Color := clBlue;
        DBMX.DefaultDrawColumnCell(Rect, DataCol, Column, State);
      end;
    end;
      

  2.   

    dxDBGrid 应该也是这么处理的。
      

  3.   

    DBMX.DefaultDrawColumnCell(Rect, DataCol, Column, State); 编译失败    没有这个DefaultDrawColumnCell 属性
      

  4.   

    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin  with DBGrid1 do
      with Canvas do begin
        if 条件 then 
        begin
          Canvas.Brush.Color := clbackground;
          canvas.Font.Color:=clYellow;
        end;
        DefaultDrawColumnCell(Rect, DataCol, Column, State);
      end;end;
      

  5.   

    procedure TBoothlnfoQueryFrm.dxDBGrid1CustomDrawCell(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 ClientDataSet1.FieldByName('status').AsString = '0' then
      begin
        dxDBGrid1.Canvas.Font.Color := clYellow;
      end;
    end;
      

  6.   

    procedure TBoothlnfoQueryFrm.dxDBGrid1CustomDrawCell(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 ClientDataSet1.FieldByName('status').AsString <= '0' then
      begin
        dxDBGrid1.Canvas.brush.Color := clred;//背景色为红色
        dxDBGrid1.Canvas.Font.Color := clwhite;//字体颜色变为白色
      end;
    end;
      

  7.   

    procedure Tcw_jiesuanForm.AllJieSuanDBGridCustomDrawCell(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);
    var
      Value: Variant;
    begin
    {
      clBlack = TColor($000000);
      clMaroon = TColor($000080);
      clGreen = TColor($008000);
      clOlive = TColor($008080);
      clNavy = TColor($800000);
      clPurple = TColor($800080);
      clTeal = TColor($808000);
      clGray = TColor($808080);
      clSilver = TColor($C0C0C0);
      clRed = TColor($0000FF);
      clLime = TColor($00FF00);
      clYellow = TColor($00FFFF);
      clBlue = TColor($FF0000);
      clFuchsia = TColor($FF00FF);
      clAqua = TColor($FFFF00);
      clLtGray = TColor($C0C0C0);
      clDkGray = TColor($808080);
      clWhite = TColor($FFFFFF);
      StandardColorsCount = 16;  clMoneyGreen = TColor($C0DCC0);
      clSkyBlue = TColor($F0CAA6);
      clCream = TColor($F0FBFF);
      clMedGray = TColor($A4A0A0);
      ExtendedColorsCount = 4;  clNone = TColor($1FFFFFFF);
      clDefault = TColor($20000000);
    }
      if ANode.HasChildren then
        Exit;
      if not ASelected and (AColumn = TYPE) then
      begin
        Value := ANode.Values[AColumn.Index];
        if (not VarIsNull(Value) )  and  Value =1 then 
                 AColor := clRed  //or       AColor :=  $0000FF 
      end;
    end;