Главная страница
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.48 MB
Время: 0.01 c
1-55154
Timon
2002-06-03 14:26
2002.06.17
tThread и динамический список


14-55312
Serhy
2002-05-16 02:56
2002.06.17
Легенды о Камелоте, короле Артуре и рыцарях Круглого Стола.


3-55045
3asys
2002-05-23 14:54
2002.06.17
Как программно вызвать диалог создания строки подключения?


4-55360
chernoruk
2002-03-21 00:09
2002.06.17
Как работать с TaskBar ???


3-55008
button
2002-05-23 15:23
2002.06.17
Как можно изменить длину поля?