是这个样子的:delphi+access;table1的结构:bianhao(编号)
feiyong1(费用1)
feiyong2(费用2)以上三个字段为文本型(因为特殊需要只能如此)现在我想把每个编号的费用之和列出来显示在DBGrid1上,我就写了如下的代码:var
str1:string;
....str1:='select kahao,sum(feiyong1+feiyong2) from table1'; ADOQuery1.SQL.Clear ;
ADOQuery1.SQL.Add(str1);
ADOQuery1.ExecSQL;
.............结果显示出来后各列之间的间隔相同。。这时候:1.我想改变某一个字段的间隔,我应该怎么做?
2.我想使sum(feiyong1+feiyong2) 这个字段的值变为红色,我应该怎么做?
feiyong1(费用1)
feiyong2(费用2)以上三个字段为文本型(因为特殊需要只能如此)现在我想把每个编号的费用之和列出来显示在DBGrid1上,我就写了如下的代码:var
str1:string;
....str1:='select kahao,sum(feiyong1+feiyong2) from table1'; ADOQuery1.SQL.Clear ;
ADOQuery1.SQL.Add(str1);
ADOQuery1.ExecSQL;
.............结果显示出来后各列之间的间隔相同。。这时候:1.我想改变某一个字段的间隔,我应该怎么做?
2.我想使sum(feiyong1+feiyong2) 这个字段的值变为红色,我应该怎么做?
2、为DBGrid1构件OnDrawDataCell事件编写响应程序:
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;Field: TField; State: TGridDrawState);
begin
if Table1.Fieldbyname(′Salary′).value<=SpinEdit1.value then
DBGrid1.Canvas.Brush.Color:=ColorGrid1.ForeGroundColor
else
DBGrid1.Canvas.Brush.Color:=ColorGrid1.BackGroundColor;
DBGrid1.Canvas.FillRect(Rect);
DBGrid1.Canvas.TextOut(Rect.left+2,Rect.top+2,Field.AsString);
end;
For i:=0 to GridName.Columns.Count-1 do
GridName.Columns[i].Width:=35;
2:
str1:='select kahao,sum(feiyong1+feiyong2) as SumFeiyong from table1';procedure TForm.DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
AText:String;
begin
inherited;
if Column.FieldName='SumFeiyong' then
begin
AText:=Column.Field.AsString;
DBGrid2.Canvas.Font.Color:=clBlue;
DBGrid2.Canvas.Font.Style:=[fsBold];
DBGrid2.Canvas.TextRect(Rect,Rect.Left+2,Rect.Top+
(Rect.Bottom-Rect.Top-DBGrid2.Canvas.TextHeight(AText)) div 2,AText);
end;
end;
GridName.Columns[i].Width:=35;