СообЧа > База Знаний > Программирование > Delphi

Вопрос

При загрузке Дельфи появляется окошко, (в 3-их желтое с девушкой). Может кто подскажет как сделать что при запуске программы появлялось такое же окошко с произвольным рисунком. И на ней отображался ход загрузки. Чтоб появлялись надписи: Открытие таблицы месяца. и т.д. и т.п.

Ответ

Я думаю, надо в этом случае работать с файлом проекта *.dpr. В списке создаваемых форм надо поставить заставку первой, сделать ее видимой и потом после создания каждой формы отображать на заставке соответствующую надпись (менять прогрессбар, etc.)

Кстати, по Русским Документам или Мастак-Дельфи проходил цикл статей для начинающих, и там как раз была такая тема. Можешь посмотреть их архивы.

Из конференции Expert_FAQ

Вот нашел в FAQ'е на delphi.mastak.ru:

Сведения о программе, авторские права и т.д., лучше оформить в виде отдельной формы и показывать ее при запуске программы (как это сделано в Word).
Сделать это не сложно:
1. Создаете форму (например SplashForm).
2. Объявляете ее свободной (availableForms).
3. В Progect Source вставляете следующее (например):

program Splashin;
uses Forms,
Main in 'MAIN.PAS',
Splash in 'SPLASH.PAS' {$R *.RES} begin try SplashForm := TSplashForm.Create(Application);
SplashForm.Show;
SplashForm.Update;
Application.CreateForm(TMainForm, MainForm);
SplashForm.Hide;
finally SplashForm.Free;
end;
Application.Run;
end.


И форма SplashForm держится на экране пока выполняется Create в главной форме. Но иногда она появляется и пропадает очень быстро, поэтому нужно сделать задержку:
1. Добавляете на форму таймер с событием:

procedure TSplashForm.Timer1Timer(Sender: TObject);
begin Timer1.Enabled := False;
end;


2. Событие onCloseQuery для формы:

procedure TSplashForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin CanClose := Not Timer1.Enabled;
end;


3. И перед SplashForm.Hide; ставите цикл:

repeat Application.ProcessMessages;
until SplashForm.CloseQuery;


4. Все! Осталось установить на таймере период задержки 3-4 секунды.

5. На последок, у такой формы желательно убрать Caption:

SetWindowLong (Main.Handle,GWL_STYLE, GetWindowLong(Main.Handle, GWL_STYLE) AND NOT WS_CAPTION OR WS_SIZEBOX);

fed_art



Copyright © 2000-2004 Сообщество Чайников
Контактная информация