DBGrid如何增加一行数据? adoquery1.appendrecord或adoquery1.append 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //==============================================================================//在DBGrid的最底行增加一行‘总计’**********************************************//==============================================================================procedure DBGridTotal(DBGrid: TDBGrid; FieldNames: string; FieldValues: Variant);var Fields, Labels: TList; Rect: TRect; i,j: integer;begin Fields := TList.Create; Labels := TList.Create; DBGrid.DataSource.DataSet.GetFieldList(Fields, FieldNames); //============================================================================ //删除DBGrid上的所有控件(但不删除自身)**************************************** //============================================================================ DBGrid.DestroyComponents; //============================================================================ //如果DataSet不为空则求和***************************************************** //============================================================================ if not DBGrid.DataSource.DataSet.IsEmpty then begin //===================================================================== //在DBGrid的最底行增加一空行******************************************* //===================================================================== TStringGrid(DBGrid).RowCount := TStringGrid(DBGrid).RowCount + 1; //===================================================================== //删除DBGrid上的所有控件*********************************************** //===================================================================== for i:=1 to Fields.Count do for j:=1 to DBGrid.Columns.Count do begin if TField(Fields[i-1])=DBGrid.Columns[j-1].Field then begin Rect := TStringGrid(DBGrid).CellRect(j,TStringGrid(DBGrid).RowCount-1); Labels.Add(Pointer(DynaCreateComponent(DBGrid,TLabel,'Label_' + IntToStr(i),Rect.Left,Rect.Top,Rect.Right,Rect.Bottom))); TLabel(Labels.Items[Labels.Count-1]).Font.Style := TLabel(Labels.Items[Labels.Count-1]).Font.Style + [fsBold]; TLabel(Labels.Items[Labels.Count-1]).Alignment := taRightJustify; TLabel(Labels.Items[Labels.Count-1]).AutoSize := false; TLabel(Labels.Items[Labels.Count-1]).Top := Rect.Bottom - DBGrid.Canvas.TextHeight(string(FieldValues[i-1])); TLabel(Labels.Items[Labels.Count-1]).Width := Rect.Right - Rect.Left; TLabel(Labels.Items[Labels.Count-1]).Caption := string(FieldValues[i-1]); end; end; end; //============================================================================ //释放资源******************************************************************** //============================================================================ Fields.Free; Labels.Free;end; 用adodataset1与数据库相连,datasource与adodataset1连,dbgrid与datasource连,在adodataset1.append;, 录入内容,在adodataset1.post,就OK dataset.append;dataset.fieldbyname('字段名').AsString = 'any string';adodataset1.post; vc 转delphi报错 grid选中多条记录后判断多条记录中是否有仓库不相同的,并提示?? ◆ 字符串比较问题◆ 难题,一个OCX的参数是WideString,我传递空的WideString进去导致了这个OCX 崩溃 网络打印问题!~在线等! 为什么i初始值总是等于4365832? ~{3,<6<r5%#,Hg:N=+~}JPG~{6A5=~}TBitmap~{6TOsVP#?BmIO8x7V#!#!~} 问一个很菜的问题,来拿分,不要客气。 如何从内存映像表中取数据。 一个很弱的问题,关于数据库的。 如何遍历光盘里的所有目录及文件? DBEdit运行后怎么没法输入?
//在DBGrid的最底行增加一行‘总计’**********************************************
//==============================================================================
procedure DBGridTotal(DBGrid: TDBGrid; FieldNames: string; FieldValues: Variant);
var Fields, Labels: TList;
Rect: TRect;
i,j: integer;
begin
Fields := TList.Create;
Labels := TList.Create;
DBGrid.DataSource.DataSet.GetFieldList(Fields, FieldNames);
//============================================================================
//删除DBGrid上的所有控件(但不删除自身)****************************************
//============================================================================
DBGrid.DestroyComponents;
//============================================================================
//如果DataSet不为空则求和*****************************************************
//============================================================================
if not DBGrid.DataSource.DataSet.IsEmpty
then begin
//=====================================================================
//在DBGrid的最底行增加一空行*******************************************
//=====================================================================
TStringGrid(DBGrid).RowCount := TStringGrid(DBGrid).RowCount + 1;
//=====================================================================
//删除DBGrid上的所有控件***********************************************
//=====================================================================
for i:=1 to Fields.Count do
for j:=1 to DBGrid.Columns.Count do
begin
if TField(Fields[i-1])=DBGrid.Columns[j-1].Field
then begin
Rect := TStringGrid(DBGrid).CellRect(j,TStringGrid(DBGrid).RowCount-1);
Labels.Add(Pointer(DynaCreateComponent(DBGrid,TLabel,'Label_' + IntToStr(i),Rect.Left,Rect.Top,Rect.Right,Rect.Bottom)));
TLabel(Labels.Items[Labels.Count-1]).Font.Style := TLabel(Labels.Items[Labels.Count-1]).Font.Style + [fsBold];
TLabel(Labels.Items[Labels.Count-1]).Alignment := taRightJustify;
TLabel(Labels.Items[Labels.Count-1]).AutoSize := false;
TLabel(Labels.Items[Labels.Count-1]).Top := Rect.Bottom - DBGrid.Canvas.TextHeight(string(FieldValues[i-1]));
TLabel(Labels.Items[Labels.Count-1]).Width := Rect.Right - Rect.Left;
TLabel(Labels.Items[Labels.Count-1]).Caption := string(FieldValues[i-1]);
end;
end;
end;
//============================================================================
//释放资源********************************************************************
//============================================================================
Fields.Free;
Labels.Free;
end;
dataset.fieldbyname('字段名').AsString = 'any string';
adodataset1.post;