In my opinion, a good design would be to add a method in TDataModule1 to fetch records from the dataset and fill a TStrings. Then from the main code, you simply pass combobox.items.
procedure TDataModule1.FetchRecords(OutStrings : TStrings);
begin
ADOQuery1.SQL.Text := 'SELECT COMPANY FROm COMPANIES WHERE COUNTRY="BELGIUM"';
ADOQuery1.Open;
while not ADOQuery1.Eof do begin
OutStrings.Add(ADOQuery1.Fields[0].AsString;
ADOQuery1.Next;
end;
end;
Then you can write code in the form:
ComboBox1.Items.Clear;
DataModule1.FetchRecords(ComboBox1.Items);
I just typed this out of my head, so maybe some minor error, but you get the idea...