DBGrid绑定到一个DataSet上,想要动态设定某一单元格的背景颜色。比如说:在显示DBGrid数据的时候的某一行的某一个字段为负值,我就设置该格的背景颜色以突出显示提醒用户。

解决方案 »

  1.   

    if query1.FieldByName(’all’).asstring<0 then
            begin
                    dbgrid1.Canvas.Font.Color:=clred;
                    dbgrid1.Canvas.Brush.color:=clyellow;
            end
            else
            begin
                    dbgrid1.Canvas.Font.Color:=clblue;
                    dbgrid1.Canvas.Brush.color:=clyellow;
                    end;
     
            dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);
      

  2.   

    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
    if query1.FieldByName(’all’).asstring<0 then
            begin
                    dbgrid1.Canvas.Font.Color:=clred;
                    dbgrid1.Canvas.Brush.color:=clyellow;
            end
            else
            begin
                    dbgrid1.Canvas.Font.Color:=clblue;
                    dbgrid1.Canvas.Brush.color:=clyellow;
                    end;
     
            dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);
    end;
      

  3.   

    procedure TFRM_MAIN.DBG_MASTERDrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin
            IF (COLUMN.FieldNAME ='CUT_QTY') THEN
              BEGIN
                 IF COLUMN.Field.Value > 50 THEN
                    BEGIN
                     DBG_MASTER.Canvas.Font.Color:=CLRED;
                    END;
              END;
    //ELSE IF GDSELECTED IN STATE THEN      //  ELSE
                   // DBG_MASTER.CANVAS.Font.Color:=CLWHITE;
    DBG_MASTER.Canvas.TextRect(RECT,RECT.Left ,RECT.Top,COLUMN.Field.DisplayText);
    end;