所以我有一个 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/