Памятка:
1) Создал Главную форму (на ней ADOConnection и все ADOTable)
2) Создал Splash-форму (исключил её из автосоздаваемых)
3) Обработчики ниже.
В итоге, с учётом всего сказанного
Freeman'ом по теме передачи данных из формы в форму и взаимодействия элементов получил:
Код:
procedure TfMain.FormCreate(Sender: TObject);
var
i: integer;
begin
fSplash := TfSplash.Create(Application);
fSplash.Show;
fSplash.Update;
for i := 0 to Connection.DataSetCount - 1 do
Connection.DataSets[i].Open;
fSplash.Free;
end;
Назначенная единственная DSBeforeOpen ко всем ADOTable
Код:
procedure TfMain.DSBeforeOpen(DataSet: TDataSet);
begin
if fSplash <> nil then
fSplash.ShowProgressFor(DataSet.Name);
end;
Сама публичная fSplash.ShowProgressFor(DataSet.Name):
Код:
procedure TfSplash.ShowProgressFor(const LoadingItem: string);
begin
if LoadingItem <> '' then
ProgressText.Caption := Format('Загрузка %s...', [LoadingItem])
else
ProgressText.Caption := '';
ProgressText.Update;
end;
Проблема с интерактивным и не интерактивным взаимодействием решена, по-моему, верно.