首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Delphi访问DBGrid的行

Delphi访问DBGrid的行
EN

Stack Overflow用户
提问于 2012-12-26 22:59:13
回答 2查看 7.4K关注 0票数 2

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

我想把我找到的匹配的整个列写成一个ListBox。

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

代码语言:javascript
复制
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;

这是我想要做的一个虚构的代码……

附言:我仍然在使用Delphi 7,(教育原因)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-26 23:11:27

您不能直接从DbGrid获取行值。相反,您必须在用于提供DbGrid的数据集之间导航。

此示例假设您使用的是TClientDataSet

代码语言:javascript
复制
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;
票数 2
EN

Stack Overflow用户

发布于 2012-12-26 23:15:02

就DBGrid只显示数据的摘录而言,您应该

  • 先获取bookmark
  • enable控件的书签,然后再使用数据集,然后将Dataset.FieldbyName(
  • 1.text).asString添加到您的列表中,然后转到bookmark
  • enable controls
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14042306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档