![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Познаю мир
Форумчанин Подтвердите свой е-майл
Регистрация: 05.10.2007
Сообщений: 387
|
![]()
----------- Незаметил дату ---------
---
|
![]() |
![]() |
![]() |
#12 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]()
Если ваша программа ничего серьезного при запуске не делает (не открывает большую базу, например), то заставка просто промелькнет.
Чтобы этого не было, и ставят таймер. По нему происходит закрытие формы заставки. Интервал таймера такой, чтобы заставку можно было успеть рассмотреть, но чтобы она не надоела. Пусть Form1 - главная форма программы, а Form2 - форма заставки. Тогда файл DPR вашего проекта должен выглядеть примерно так: Код:
|
![]() |
![]() |
![]() |
#13 |
Форумчанин
Регистрация: 11.10.2007
Сообщений: 384
|
![]() Код HTML:
Доброе время суток!!! Тут мне на глаза попалось! Мож это подойдёт? Заставка для программы Сведения о программе, авторские права и т.д., лучше оформить в виде отдельной формы и показывать ее при запуске программы (как это сделано в 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);
Не количеством плюсов измеряется репутация человека...!
|
![]() |
![]() |
![]() |
#14 |
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
Регистрация: 29.09.2007
Сообщений: 1,824
|
![]()
А подробнее этот код описать можно....
вы хотите сказать что если мы будим запускать действительно тяжелое приложение она будет отобрать заставку пока не загрузиться основная часть? begin Application.Initialize; Form2 := TForm2.Create(Application); Form2.Show; Form2.Update; Application.CreateForm(TForm1, Form1); Form2.Free; Application.Run; end.
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
|
![]() |
![]() |
![]() |
#15 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]()
Вы все правильно поняли, именно так и будет, если основная форма будет долго грузиться. Правда, в этом случае таймер в заставке не используется.
Код:
Последний раз редактировалось mihali4; 13.11.2007 в 22:53. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Забавы с Windows (создание заставки) | SCS | Свободное общение | 4 | 05.10.2007 12:53 |