2012-12-26 28 views
2

所以我有一個TDBGrid中,我的目的是尋找DBGrid中的字段名,並與我編輯的文本屬性,如果比較他們是平等的話,德爾福達到一個DBGrid的行

我想寫整個列我已經找到匹配,到一個ListBox。

使用帶有fieldcount的for循環,我可以比較FieldName,但由於沒有可以使用的行或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; 

這是什麼即時試圖做一個假想的代碼...

PS:我仍然用Delphi 7,(教育原因)

回答

2

你不能行直接來自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; 
0

至於DBGrid中只顯示數據,恕我直言,你應該

  • 先得到你的數據集的書籤
  • 禁用控制
  • 使用的摘錄,而不是EOF你數據集,將 Dataset.FieldbyName(Edit1.text).asString添加到您的列表中
  • goto書籤
  • 啓用控件