如何判断Delphi TDBGrid何时从数据库中填充?

时间:2010-10-07 15:45:19

标签: delphi delphi-2007

我在Delphi 2007 Pro中有一个填充TDBGrid的数据库。当网格完成填充时,我想根据从网格处理的数据自动填充列表框。我可以通过观察并等待网格完全填充数据集然后调用我的下一个程序来手动执行此操作。是否有一个事件允许在网格自动填充时调用下一个过程?感谢。

2 个答案:

答案 0 :(得分:3)

如果您使用的是TDataSet后代,则可以使用其AfterOpen事件:

"AfterOpen is called after the dataset establishes access to its data and the dataset is put into dsBrowse state."


编辑Duilio's answer的评论的代码示例):在下面,'CD​​S'是'TClientDataSet'。 'TDBGrid'也通过'TDataSource'附加到数据集,但网格的功能不受下面代码的任何影响,或者ListBox的功能与网格相关..

procedure TForm1.CDSAfterOpen(DataSet: TDataSet);
var
  sl: TStringList;
begin
  sl := TStringList.Create;
  try
    sl.Sorted := True;
    sl.Duplicates := dupIgnore;

    DataSet.DisableControls;
    try
      DataSet.First;
      while not DataSet.Eof do begin
        sl.Add(DataSet.Fields[1].AsString);
        DataSet.Next;
      end;
      DataSet.First;
    finally
      DataSet.EnableControls;
    end;

    ListBox1.Items.Assign(sl);
  finally
    sl.Free;
  end;
end;

答案 1 :(得分:0)

我认为你可以执行:

TDataSet.Open;
TDataSet.FetchAll;
{At this point DBGrid should be populated}

这将从您的表中获取所有数据。完成后,应填充DBGrid。