我想在dxDBGrid表中把满足条件的记录上划一条线(中划线),以表示该条记录作废。因为仅仅变颜色不能满足我的要求,而且好多情况都用颜色变化来体现,结果是颜色都乱了,容易看花眼。最好dxDBGrid、DBGrid和DBGridEh都能实现该功能。大侠们帮帮忙啊,谢谢了!

解决方案 »

  1.   

    procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
      Field: TField; State: TGridDrawState);
    begin
      if ADOTable1.FieldByName('xh').Value = 2 then
      with (Sender as TDBGrid).Canvas do //画 cell 的边框
      begin
        Pen.Color := clRed; //定义画笔颜色(蓝色)
        MoveTo(Rect.Left, Rect.Bottom-5); //画笔定位
        LineTo(Rect.Right, Rect.Bottom-5); //画蓝色的横线
      {  Pen.Color := $0000ff00; //定义画笔颜色(绿色)
        MoveTo(Rect.Right, Rect.Top); //画笔定位
        LineTo(Rect.Right, Rect.Bottom); //画绿色的竖线 }
      end;
    end;
      

  2.   

    下面的程序是在D7,WINXP下测试通过的,
    procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
      Field: TField; State: TGridDrawState);
    begin
      if ADOTable1.FieldByName('xh').Value = 2 then//判断你的条件
      with (Sender as TDBGrid).Canvas do //画 cell 的边框
      begin
        Pen.Color := clRed; //定义画笔颜色(蓝色)
        MoveTo(Rect.Left, Rect.Bottom-5); //画笔定位
        LineTo(Rect.Right, Rect.Bottom-5); //画蓝色的横线
      end;
    end;