![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Заставка [D7, WinXP]
GOgo © (2004-11-26 18:56:00)Хай, пытаюсь сделать чтобы при загрузке формы 2 на экране появлялась форма один, была на экране 3 секунды и исчезала, надо заставку, но возникает ошибка в памяти при загрузке...
procedure TForm1.Timer1Timer(Sender: TObject);
var
x: Integer;
begin
If Ready=True then
Begin
x:=GetTickCount div 1000;
If x>3 then
Begin
Form1.Visible:=False;
Form2.Visible:=True;
end;
end;
end;
---------
procedure TForm1.FormCreate(Sender: TObject);
begin
Ready:=True;
Timer1.Enabled:=True;
Form1.Visible:=True;
Form2.Visible:=False;
end;
Германн (2004-11-27 01:17:00) [1]Ой, че-то мне сомнительна необходимость вызова метода Update и возможность использования таймера до вызова Application.Run :(
Гаврила (2004-11-27 00:47:00) [2]таки лучше передавать nil овнером в конструктор для сплеш окна
и убивать ее не методом Free а методом Release
и никаких таймеров - форма убъется когда начнет работать цикл выборки сообщений - то есть именно тогда, когда надо
Dot (2004-11-27 00:10:00) [3]TScreenForm.Timer1Timer
смотри внимательней
SergP (2004-11-26 23:52:00) [4]
> При этом создаешь форму-заставку (простая форма) а на ней
> кладешь таймер и далее по обработчику.
Если имеется ввиду обработчик OnCreate формы, то таймер лучше поставить на другой форме, так как в OnCreate заставки возникнет ошибка...
Dot (2004-11-26 23:29:00) [5]В проекте делаешь вот такое вот.
***************************
uses
Forms,
MainUnit in 'MainUnit.pas' {MainForm},
Screen in 'Screen.pas' {ScreenForm},
begin
Application.Initialize;
ScreenForm:=TScreenForm.Create(Application);
ScreenForm.Show;
ScreenForm.Update;
while ScreenForm.Timer1.Enabled do
Application.ProcessMessages;
Application.CreateForm(TMainForm, MainForm);
ScreenForm.Hide;
ScreenForm.Free;
Application.Run;
end.
**************************
При этом создаешь форму-заставку (простая форма) а на ней кладешь таймер и далее по обработчику.
procedure TScreenForm.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled:=false;
end;
SergP (2004-11-26 23:17:00) [6]Создаешь в design-time свою форму, например Splash
и правишь файл проекта (dpr) типа так:
program MojaProga;
uses
Forms,
Dialogs,
Graphics,
...
begin
Application.Initialize;
Splash:= TSplash.Create(Application);
splash.Show;
splash.Update;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm5, Form5);
Application.CreateForm(TForm4, Form4);
splash.Free;
Application.Run;
end.
С временем сам придумай... А то я взял это из одной своей старой проги. Там создание остальных форм занимало несколько секунд, поэтому мне лишняя задержка не нужна была...
SergP (2004-11-26 23:17:00) [7]Создаешь в design-time свою форму, например Splash
и правишь файл проекта (dpr) типа так:
program MojaProga;
uses
Forms,
Dialogs,
Graphics,
...
begin
Application.Initialize;
Splash:= TSplash.Create(Application);
splash.Show;
splash.Update;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm5, Form5);
Application.CreateForm(TForm4, Form4);
splash.Free;
Application.Run;
end.
С временем сам придумай... А то я взял это из одной своей старой проги. Там создание остальных форм занимало несколько секунд, поэтому мне лишняя задержка не нужна была...
begin...end (2004-11-26 19:01:00) [8]
> GOgo (26.11.04 18:56)
"Ошибка в памяти" возникает, возможно, из-за того, что Form2 ещё не создана.
http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988619925&n=16