delphi - 我如何知道Delphi TDBGrid从数据库完成填充的时间?

标签 delphi delphi-2007

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

最佳答案

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

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

编辑(用于Duilio's answer的注释的代码示例):在下面,“ CDS”是“ TClientDataSet”。还通过“ TDataSource”将“ TDBGrid”附加到数据集,但是网格的功能绝不受以下代码或与此相关的列表框的功能与网格的影响。

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;

关于delphi - 我如何知道Delphi TDBGrid从数据库完成填充的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3883395/

相关文章:

delphi日期时间格式错误

multithreading - 从线程内部实例化一个降序线程是否安全?

delphi - Delphi程序中删除的组件

Delphi 2007 和 Indy10 在 IdGlobal 中编译错误

delphi - 在拖放过程中使用 DragImage 绘制 TPaintBox

delphi - delphi中名为create的函数的问题

string - Delphi 2007 中对多维数组进行排序

delphi - 在 Delphi XE2 上使用 UniDac 的 PostgreSQL 串行(自动增量)

delphi - 为什么访问动态数组的越界索引不会引发 AV?

json - 如何用Delphi解析Json