我在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/