CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

奇怪问题????????????

楼主xxsteven()2001-12-04 13:04:25 在 Delphi / VCL组件开发及应用 提问

我有个sql语句:  
  SELECT   产品名称,型号规格,仓库类别,SUM(数量*CHARINDEX('入库',   出入库情况))   AS   入库数量,  
      SUM(数量*CHARINDEX('出库',   出入库情况))   AS   出库数量,  
      SUM(数量*CHARINDEX('入库',   出入库情况))   -   SUM(数量*CHARINDEX('出库',   出入库情况))   AS   结存  
  FROM   产品  
  GROUP   BY   产品名称,型号规格,仓库类别  
   
  我要做个报警设置,当结存数量为0的时候显示红色,程序如下:  
  procedure   Twelcome.DBGrid1DrawDataCell(Sender:   TObject;   const   Rect:   TRect;  
      Field:   TField;   State:   TGridDrawState);  
   
  begin  
      if   Query1.FieldByName('结存').AsInteger   =   0   then  
              DBGrid1.Canvas.Brush.Color   :=   clRed;  
      DBGrid1.DefaultDrawDataCell(Rect,   Field,   State);  
   
  end;  
  但是却显示不出来红色,着是为什么呀????/ 问题点数:80、回复次数:11Top

1 楼taber(李沉舟)回复于 2001-12-04 13:11:42 得分 0

 
                没接触过这类问题  
      if   Query1.FieldByName('结存').AsInteger   =   0   then       //判断时cell是否已画出来了?此时更改color是不是迟了?  
              DBGrid1.Canvas.Brush.Color   :=   clRed;  
      DBGrid1.DefaultDrawDataCell(Rect,   Field,   State);  
                    我没试过,猜测…………  
                                                   
  Top

2 楼xxsteven()回复于 2001-12-04 13:16:05 得分 0

我想是不是,结存不是一个实际的数据库里面的字段呀Top

3 楼tikkypeng(千两狂死郎之天衣有缝)回复于 2001-12-04 13:17:45 得分 0

    if   Query1.FieldByName('结存').AsInteger   =   4   then  
              DBGrid1.Canvas.Brush.Color   :=   clRed;  
      DBGrid1.DefaultDrawColumnCell(Rect,   DataCol,   Column,   State);Top

4 楼zswang(伴水清清)(专家门诊清洁工)回复于 2001-12-04 13:21:19 得分 0

procedure   Twelcome.DBGrid1DrawDataCell(Sender:   TObject;   const   Rect:   TRect;  
      Field:   TField;   State:   TGridDrawState);  
  begin  
      if   (TDBGrid(Sender).DataSource.DataSet.FieldByName('结存').AsInteger   =   0)   or    
          TDBGrid(Sender).DataSource.DataSet.FieldByName('结存').IsNull   then  
              TDBGrid(Sender).Canvas.Font.Color   :=   clRed;  
      TDBGrid(Sender).DefaultDrawDataCell(Rect,   Field,   State);  
  end;  
  Top

5 楼zswang(伴水清清)(专家门诊清洁工)回复于 2001-12-04 13:31:30 得分 0

procedure   TForm1.DBGrid1DrawColumnCell(Sender:   TObject;   const   Rect:   TRect;  
      DataCol:   Integer;   Column:   TColumn;   State:   TGridDrawState);  
  begin  
      if   (TDBGrid(Sender).DataSource.DataSet.FieldByName('结存').AsInteger   =   0)   or  
          TDBGrid(Sender).DataSource.DataSet.FieldByName('结存').IsNull   then   begin  
              TDBGrid(Sender).Canvas.Font.Color   :=   clRed;  
          TDBGrid(Sender).Canvas.Font.Color   :=   clRed;  
          TDBGrid(Sender).DefaultDrawColumnCell(Rect,   DataCol,   Column,   State);  
      end;  
  end;  
  Top

6 楼zswang(伴水清清)(专家门诊清洁工)回复于 2001-12-04 13:35:21 得分 0

procedure   TForm1.DBGrid1DrawColumnCell(Sender:   TObject;   const   Rect:   TRect;  
      DataCol:   Integer;   Column:   TColumn;   State:   TGridDrawState);  
  begin  
      if   (TDBGrid(Sender).DataSource.DataSet.FieldByName('单价').AsInteger   =   0)   or  
          TDBGrid(Sender).DataSource.DataSet.FieldByName('单价').IsNull   then   begin  
          TDBGrid(Sender).Canvas.Font.Color   :=   clRed;  
          TDBGrid(Sender).DefaultDrawColumnCell(Rect,   DataCol,   Column,   State);  
      end;  
  end;  
  Top

7 楼xxsteven()回复于 2001-12-04 13:36:51 得分 0

各位   高手还是显示不出来red呀?  
     
      if   Query1.FieldByName('结存').AsInteger   =   4   then  
              DBGrid1.Canvas.Brush.Color   :=   clRed;  
      DBGrid1.DefaultDrawColumnCell(Rect,   DataCol,   Column,   State);      
  哪个DataCol怎么包错呀  
   
  Top

8 楼xxsteven()回复于 2001-12-04 13:43:27 得分 0

大家帮帮我呀  
  DataCol说是没有申明Top

9 楼zswang(伴水清清)(专家门诊清洁工)回复于 2001-12-04 13:45:55 得分 80

DBGrid1DrawDataCell     <>   DBGrid1DrawColumnCell  
  Top

10 楼xxsteven()回复于 2001-12-04 13:46:30 得分 0

谢谢,解决了呀?Top

11 楼zswang(伴水清清)(专家门诊清洁工)回复于 2001-12-04 13:47:20 得分 0

procedure   TForm1.DBGrid1DrawColumnCell(Sender:   TObject;   const   Rect:   TRect;  
  //                               ~~~~~~~~~~~~~~~~~~~~~  
      DataCol:   Integer;   Column:   TColumn;   State:   TGridDrawState);  
   
   
  嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻  
  嘻嘻嘻不就可以了嘻嘻嘻嘻  
  嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻  
  Top

相关问题

  • 奇怪,奇怪
  • 奇怪,奇怪!
  • 奇怪奇怪???
  • 奇怪!奇怪
  • 奇怪奇怪...........?????...........
  • 奇怪!奇怪!真奇怪!!!
  • 奇怪奇怪真奇怪
  • 奇怪???奇怪??奇怪???
  • 奇怪奇怪真奇怪。
  • 奇怪奇怪奇怪................

关键词

  • 结存
  • dbgrid1
  • fieldbyname
  • asinteger
  • clred
  • tdbgrid
  • defaultdrawdatacell
  • 出库
  • tgriddrawstate
  • 数量

得分解答快速导航

  • 帖主:xxsteven
  • zswang

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo