Главная страница
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.019 c
7-55342
Victor N Golutvin
2002-03-19 00:49
2002.06.17
Собственный обработчик прерываний


1-55091
Serg2002
2002-06-06 08:47
2002.06.17
И снова о масштабах (пиксел*мм) при печати из Image


1-55213
SONY
2002-06-05 14:04
2002.06.17
Преобразование минут в ввиде 2,25 в кол. секунд 145


3-55001
Chainik
2002-05-23 10:28
2002.06.17
Что делать с DBComboBox ом?


4-55346
ghost_by
2002-04-12 21:06
2002.06.17
SHAppBarMessage - нужно разобраться.