Если вы используете потомка TDataSet
, вы можете использовать его AfterOpen
событие:
"AfterOpen is called after the dataset establishes access to its data and the dataset is put into dsBrowse state."
edit (пример кода для комментариев для Ответ Duilio ): ниже CDS - это 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;