Цитата:
Сообщение от Uniq!
Подкиньте ссылочку. Не могу найти эту "тему".
|
Ну как же, та самая, "
факельная".
Цитата:
Сообщение от Uniq!
Думал сделать (дополнительную) форму, на OnShow которой, загрузить все таблицы. Но где вызвать её рождение ума не приложу.
|
На
самом деле должно быть наоборот. Программа выполняет основные действия, которые, если нужно отображаются где-либо в интерфейсе. По-умному это зовется неинтерактивный процесс или неинтерактивное выполнение -- пользователь не может вмешаться в него. Ему в противоположность бывает интерактивный процесс или диалог, когда все пляшет вокруг интерфейса.
Нужно обычным порядком создать форму, разместить на ней необходимые компоненты, а потом предусмотреть публичный метод:
Код:
type
TSplashForm = class(TForm)
ProgressLabel: TLabel;
...
public
procedure ShowProgressFor(const LoadingItem: string);
end;
var
SplashForm: TSplashForm;
resourcestring
sLoadingItem = 'Загрузка %s...';
procedure TSplashForm.ShowProgressFor(const LoadingItem: string);
begin
if LoadingItem <> '' then
ProgressLabel.Caption := Format(sLoadingItem, [LoadingItem]);
else
ProgressLabel.Catpion := '';
ProgressLabel.Update;
end;
Соответственно, у DataSet-ов вызывать:
Код:
procedure DataSetBeforeOpen(DataSet: TDataSet);
begin
if SplashForm <> nil then
SplashForm.ShowProgressFor(DataSet.Name);
end;
procedure DataSetAfterOpen(DataSet: TDataSet);
begin
if SplashForm <> nil then
SplashForm.ShowProgressFor('');
end;
Получается ровно так, как писал в предыдущем сообщении. Возможно, вместо TLabel для ProgressLabel лучше использовать TStaticText, чтобы перерисовывалась только его область, а не вся форма. Такое поведение предполагаю, по коду VCL не смотрел.