Delphi 到达 DBGrid 的行

标签 delphi rows dbgrid

所以我有一个 TDBGrid,我的目的是搜索 DBGrid 的 Fieldname 并将其与我的编辑的 Text 属性进行比较,如果它们相等,则

我想将找到匹配项的整列写入列表框。

通过带有 fieldcount 的 for 循环,我可以比较 FieldName,但由于没有可以使用的 rows 或 rowcount 属性,我不知道如何获取整个列的索引。

for i:=0 to DBGrid1.FieldCount-1 do
begin
 if DBGrid1.Fields[i].FieldName=Edit1.Text then
   for j:=1 to DBGrid1.RowCount-1 do
     ListBox1.Items.Add(DBGrid1.Rows.Fields[i].Index.AsString);
end;

这是我想要做的虚构代码...

P.S.:我仍在使用 Delphi 7,(教育原因)

最佳答案

您无法直接从 DbGrid 获取行值。相反,您必须浏览用于提供 DbGrid 的数据集。

此示例假设您使用的是 TClientDataSet

for i := 0 to DBGrid1.FieldCount - 1 do
begin
  if DBGrid1.Fields[i].FieldName = Edit1.Text then
  begin
    ClientDataSet1.DisableControls;
    try
      ClientDataSet1.First();
      while (not ClientDataSet1.Eof) do
      begin
        ListBox1.Items.Add(ClientDataSet1.FieldByName(Edit1.Text).AsString);
        ClientDataSet1.Next();
      end;
    finally
      ClientDataSet1.EnableControls;
    end;
  end;
end;

关于Delphi 到达 DBGrid 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14042306/

相关文章:

delphi - 在下载之前,使用delphi以编程方式从远程文件获取文件大小

c - 如何像C语言中的 vector 之和一样对二维数组的两行逐个元素求和?

php - 将行迁移到新表,然后删除它们

delphi - 执行查询后如何挂接?

Delphi - 当选择位于另一行时更新 dbGrid 中的字段

delphi - 从 DrawColumnCell 中的前一行获取值

javascript - Delphi - 无法在多线程应用程序中使用 IWebBrowser2 抑制 JavaScript 错误对话框

arrays - 是否可能:记录中的数组

delphi - 何时使用 object.free 和 freeandnil(object);

python - Pandas - 根据其他列中的值将数据添加到列