Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выполнение действий до загрузки формы 
:(
    Опции темы
Dimyan
Дата 10.3.2005, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 441
Регистрация: 12.1.2004
Где: Новосибирск

Репутация: нет
Всего: 4



Ситуация такая: При запуске программы заполняется TreeView и БД (основной потребитель времени) и выполняются еще кое какие действия для подготовки программы к работе. Все это довольно сильно тормозит загрузку главной формы (на не быстрых компах создается эффект, что программа не запустилась и соправождается попыткой повторного запуска). Хотелось бы сделать так чтоб эти действия происходили до показа основной формы и во время них появлялось какое-нибудь окошечко которое сообщает что программа запущена и идет подготовка к работе. Как можно такое реализовать?


--------------------
Как хорошо ничего не делать, а потом еще немного отдохнуть :)
PM MAIL ICQ   Вверх
SPrograMMer
Дата 10.3.2005, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Спамер :)
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 5.11.2004
Где: Краснодар

Репутация: 2
Всего: 6



Создаем еще одно окно, допустим Form2. На ней размещаем:
- логотип (по желанию) smile
- прогресс (TProgressBar, TGauge)
- таймер (Timer)
На первой форме создаем обработчик события OnShow:
Код

Procedure TForm1.FormShow(Snedr:TOBject);
Begin
  Form2.ShowModal
End;

То есть перед отображением главной формы показать вторую, в которой, по таймеру, сделать нужные действия, после чего программным путем закрыть Form2, таким образом ShowModal, выполниться и управление перастся в главную форму. smile
Добавлено @ 15:45
Вот код (примерный) для второй формы:
Код

Procedure TForm2.FormShow(Sender:TObject);
Begin 
  ProgressBar1.Position:=0;
  Timer1.Enabled:=True // запускаем таймер (в дизайне сделай ему False)
End;
Procedure TForm2.Timer1Timer(Sender:TObject);
Begin
  ProgressBar1.Position:=ProgressBar1.Position+1; // Инкремент  прогрессу
  Timer1.Enabled:=False;   // НУЖНО!!!!
  case ProgressBar1.Position Of
     1: //Выполнить первую часть действий, например, Connect к базе
     2: //выполнить 2-ую часть , например, открыть нужные наборы данных
     ...
     50: //выполнить 50-ое действие.....
     ...
     100:
         Begin  // Ура дошли до конца!
            Form2.Close // Закрыть вторую форму и вернуться к главной
         End;
   End;
  Timer1.Enabled:=ProgressBar1.Position<100
End;



--------------------
животное = зверь
законченный гентушник
PM MAIL ICQ Jabber   Вверх
~FoX~
Дата 10.3.2005, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



Может так:

Код

program MyProg;

uses
  Forms,
  Form1 in 'Form1.pas' {Form1},
  USplash in 'USplash.pas' {Splash},

{$R *.res}

begin
  Application.Initialize;

  Application.Title := 'Моя прога';

  Application.CreateForm(TSplash, Splash);
  Application.CreateForm(TForm1, Form1);

  Splash.ShowModal;
  Application.Run;
end.



--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Alex
Дата 10.3.2005, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162





--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0547 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.