Показать сообщение отдельно
  #14  
Старый 24.09.2013, 03:02
Аватар для Uniq!
Uniq! Uniq! вне форума
Местный
 
Регистрация: 29.09.2010
Сообщения: 539
Версия Delphi: Delphi XE3
Репутация: 374
По умолчанию

Памятка:
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;
Проблема с интерактивным и не интерактивным взаимодействием решена, по-моему, верно.
Ответить с цитированием