Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2007, 00:06   #11
GAGARIN-NEW
Познаю мир
Форумчанин Подтвердите свой е-майл
 
Аватар для GAGARIN-NEW
 
Регистрация: 05.10.2007
Сообщений: 387
По умолчанию

----------- Незаметил дату ---------
---
GAGARIN-NEW вне форума Ответить с цитированием
Старый 12.11.2007, 00:08   #12
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Если ваша программа ничего серьезного при запуске не делает (не открывает большую базу, например), то заставка просто промелькнет.
Чтобы этого не было, и ставят таймер. По нему происходит закрытие формы заставки. Интервал таймера такой, чтобы заставку можно было успеть рассмотреть, но чтобы она не надоела.
Пусть Form1 - главная форма программы, а Form2 - форма заставки.
Тогда файл DPR вашего проекта должен выглядеть примерно так:
Код:
program Project1; 

uses 
  Forms, 
  Unit1 in 'Unit1.pas' {Form1}, 
  Unit2 in 'Unit2.pas' {Form2}; 

{$R *.RES} 

begin 
  Application.Initialize; 
  Form2 := TForm2.Create(Application); 
  Form2.Show; 
  Form2.Update; 
  Application.CreateForm(TForm1, Form1); 
  Form2.Free; 
  Application.Run; 
end.
А выводить на заставке прогресс-бар, показывающий процесс создания отдельных компонентов формы (!), это, извините, бред сивой кобылы...
mihali4 вне форума Ответить с цитированием
Старый 13.11.2007, 02:52   #13
Volkogriz
Форумчанин
 
Аватар для Volkogriz
 
Регистрация: 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);
С уважением Volkogriz!
Не количеством плюсов измеряется репутация человека...!
Volkogriz вне форума Ответить с цитированием
Старый 13.11.2007, 22:45   #14
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 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.
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 13.11.2007, 22:48   #15
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Вы все правильно поняли, именно так и будет, если основная форма будет долго грузиться. Правда, в этом случае таймер в заставке не используется.
Код:
Application.Initialize; //стандартная инициализация
Form2 := TForm2.Create(Application); //создание заставки
Form2.Show; //показ заставки
Form2.Update; //перерисовывание заставки
Application.CreateForm(TForm1, Form1); //создание главной формы
Form2.Free; //освобождение ресурсов заставки
Application.Run; //старт приложения

Последний раз редактировалось mihali4; 13.11.2007 в 22:53.
mihali4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Забавы с Windows (создание заставки) SCS Свободное общение 4 05.10.2007 12:53