Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Заставка [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


Наверх

Титульная страница Поиск, карта сайта Написать письмо