Delphi 如何将记录字段从dbgrid显示到editbox

Delphi 如何将记录字段从dbgrid显示到editbox,delphi,ms-access-2010,delphi-7,Delphi,Ms Access 2010,Delphi 7,我建立了一个access数据库,并将其与一个ADOquery和Datasource连接。我建立了一个名为BagCost的表,其中包含字段名bag size和cost。我将一个DBgrid附加到一个表单中,并将其与“Bagcost”表链接。Dbgrid具有以下字段: 如何在运行时将dbgrid列中的四个成本显示到不同的editboxs 我希望我能正确地理解你。您需要做的是从四条记录中的每一条读取数据。使用First和Next方法更改活动记录,Eof方法测试活动记录是否是数据集中的最后一条记录。或

我建立了一个access数据库,并将其与一个
ADOquery
Datasource
连接。我建立了一个名为
BagCost
的表,其中包含字段名
bag size
cost
。我将一个
DBgrid
附加到一个表单中,并将其与“Bagcost”表链接。
Dbgrid
具有以下字段:


如何在运行时将dbgrid列中的四个成本显示到不同的
editboxs

我希望我能正确地理解你。您需要做的是从四条记录中的每一条读取数据。使用
First
Next
方法更改活动记录,
Eof
方法测试活动记录是否是数据集中的最后一条记录。或者(对于大量记录),使用
DisableControls
EnableControls
方法来防止数据感知控件在活动记录每次更改时更新

示例:

接下来是一个基本示例,它使用
AfterOpen
事件从查询的每个记录中读取字段值

procedure TfrmMain.qryAfterOpen(DataSet: TDataSet);
begin
   DataSet.DisableControls;
   try
      DataSet.First;
      if not DataSet.Eof then Edit1.Text := DataSet.FieldByName('cost').AsString else Edit1.Text := 'Record not found';
      DataSet.Next;
      if not DataSet.Eof then Edit2.Text := DataSet.FieldByName('cost').AsString else Edit2.Text := 'Record not found';
      DataSet.Next;
      if not DataSet.Eof then Edit3.Text := DataSet.FieldByName('cost').AsString else Edit3.Text := 'Record not found';
      DataSet.Next;
      if not DataSet.Eof then Edit4.Text := DataSet.FieldByName('cost').AsString else Edit4.Text := 'Record not found';
      DataSet.First;
   finally
      DataSet.EnableControls;
   end{try};
end;

您是否询问如何在运行时为数据集中的每条记录创建
TEdit
组件?数据集中的记录数是多少?始终为4?谢谢。我已经在表单中创建了四个
editbox
。我只需要显示这些
编辑框的成本
。记录的计数不会更改。但是,如果记录发生变化,那么我将不得不在运行时创建
Tedit
组件。我添加了
delphi
标记,因为这个问题不仅仅是关于delphi 7感谢Zhorov的代码。在根据我的应用程序为
数据集
输入正确的名称后,它可以完美地工作。我不知道如何实现按顺序读取记录的
first
next
eof
方法。我只使用查询检索单个记录。