Форум: "Основная";
Текущий архив: 2002.06.17;
Скачать: [xml.tar.bz2];
ВнизПоменять главную форму... Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c