奇怪问题????????????
我有个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




