Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.17;
Скачать: CL | DM;

Вниз

Поменять главную форму...   Найти похожие ветки 

 
Yuri Btr ©   (2002-06-04 12:48) [0]

Подскажите пожалуйста:
Мне нужно в приложении создать главную форму - Form1, и затем в событии OnCreate для MainForm, показать заставку - Form2 я делаю так:

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

А в
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.CreateForm(TForm2, Form2);
Form2.Show;
Form2.Close;
end;

При этом главной формой становится - Form2 и естественно приложение стопорится, даже если не делать
Form2.Show;
Form2.Close;

Как мне сделать чтобы Form1 оставалось главной?


 
MBo ©   (2002-06-04 12:59) [1]

В FAQ есть пример с заставкой


 
Yuri Btr ©   (2002-06-04 13:01) [2]

Спасибо, я уже разобрался...:-)
Сорри за беспокойство.


 
yozhik   (2002-06-04 13:05) [3]

Вытянул из FAQ:
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);


 
Игорь Шевченко ©   (2002-06-04 13:15) [4]

yozhik (04.06.02 13:05)

Зачем так сложно?

Program Files\Borland\Delphi\Demos\DB\Mastapp\*.*


 
Вовчик   (2002-06-04 18:59) [5]

А можно просто создать главную форму невидимой. Для этого в проект файле после
Application.CreateForm(TMainForm, MainForm);
вставить
Application.ShowMainForm := False;
Видимой будет следующая по созданию форма
Соответсвенно она и выполнит роль заставки, после чего MainForm.Show и ок



Страницы: 1 вся ветка

Текущий архив: 2002.06.17;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.014 c
14-55298
Malder
2002-05-14 23:05
2002.06.17
Об UBPFD


14-55308
ATLANTIDO
2002-05-16 17:14
2002.06.17
сервера приложений


14-55303
lak_b
2002-05-16 00:01
2002.06.17
сон и мы


1-55114
juster
2002-06-06 11:24
2002.06.17
php serialize


1-55056
Kudatsky
2002-06-05 12:46
2002.06.17
PickList в TDBGrid