Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Заставка


Автор: DimassS 22.5.2006, 08:13
Вопрос помоуму уже задавался, и в DRKB про это есть, делаю вроде всё правильно, а не получается smile 
Создаю новую форму, в Options закидываю её в Available forms, кидаю на неё таймер, задаю ему Enabled=true, interval=5000
в Project пишу:

Код

program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  QStrings in 'QSTRINGS.PAS',
  Unit2 in 'Unit2.pas' {Form2},
  Unit3 in 'Unit3.pas' {Form3},
  Unit4 in 'Unit4.pas' {Form4},
  Unit5 in 'Unit5.pas' {Form5},
  Unit6 in 'Unit6.pas' {Put};

{$R *.res}

begin
  Application.Initialize;
  Form5 := TForm5.Create(Application);
  Form5.Show;
  Form5.Update; 
  while Form5.Timer1.Enabled do
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.CreateForm(TForm3, Form3);
  Application.CreateForm(TForm4, Form4);
  Application.CreateForm(TPut, Put);
  Form5.Hide;
  Form5.Free; 
  Application.Run;


тормозит на цикле While, может таймер не пашет??? smile  
Выручайте - заранее благодарю!!! 

Автор: Albinos_x 22.5.2006, 08:19
убери эти строки вообще....
1. непонятно зачем этот цикл вообще?
2. думаю множественная инициализация приложения ни к чему хорошему не приведёт (Application.Initialize;) 

Автор: drkot 22.5.2006, 13:03
Цитата(DimassS @  22.5.2006,  08:13 Найти цитируемый пост)
Создаю новую форму, в Options закидываю её в Available forms, кидаю на неё таймер, задаю ему Enabled=true, interval=5000

таймер начинает работать только после
 
Код
Application.Run;
 

используй задержки между созданием форм
Код
sleep(ms)
 

Автор: killerbean 22.5.2006, 16:51
попробуй так:
Код

program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2};

{$R *.RES}

begin
  Application.Initialize;
  Form2 := TForm2.Create(Application);
  Form2.Show;
  Form2.Update;
  while Form2.Timer1.Enabled do
    Application.ProcessMessages;
  Application.CreateForm(TForm1, Form1);
  Form2.Hide;
  Form2.Free;
  Application.Run;
end.
 

Автор: Albinos_x 22.5.2006, 17:34
оно у тебя вообще компилится? 

Автор: DimassS 23.5.2006, 03:24
Цитата

используй задержки между созданием форм

так и сделал!!! smile  теперь пашет!!! но про это-то я знал, хотел вот так сделать, но видно одно слово перепутал:

Создание заставки при старте программы 
 Previous  Top  Next  

      
  


Перед появлением главного окна во всех серьёзных приложениях сначала появляется заставка. Теперь и у Вас есть возможность повыёживаться! Для создания заставки выполняем следующую последовательность действий: 

Начинаем создание нового приложение командой "New Application" ("Новое приложение") из меню "File" ("Файл") 

Добавьте ещё одну форму: "New Form"("Новая форма") из меню "File" ("Файл"). Это окно и будет заставкой. У него нужно убрать рамку с полосой заголовка, установив свойство "BorderStyle" в "bsNone". Теперь можно смело разработать дизайн окна заставки. 

Из меню "Project" ("Проект") выбрать команду "Options"("Опции"). Зайти на закладку "Forms"("Формы") и Form2 из списка автоматически создаваемых форм (Auto-Create forms) перенести в список доступных форм (Available forms) 

На форму-заставку с закладки System вынести компонент Timer. В его свойстве Interval установить значение 5000, а в событии OnTimer написать: 



Timer1.Enabled := false; 




Это сделано для того, чтобы заставка была видна в период указанного времени – 5000 миллисекунд, т.е. 5 секунд. 

Перейти в файл проекта, нажав Ctrl+F12 и выбрав Project1. Исходный код должен выглядеть так: 



Код

program Project1; 

uses 
  Forms, 
  Unit1 in 'Unit1.pas' {Form1}, 
  Unit2 in 'Unit2.pas' {Form2}; 

{$R *.RES} 

begin 
  Application.Initialize; 
  Application.CreateForm(TForm1, Form1); 
  Application.Run; 
end. 

  


Теперь мы внесём сюда немного изменений и код должен стать таким: 



Код

program Project1; 

uses 
  Forms, 
  Unit1 in 'Unit1.pas' {Form1}, 
  Unit2 in 'Unit2.pas' {Form2}; 

{$R *.RES} 

begin 
  Application.Initialize; 
  Form2 := TForm2.Create(Application); 
  Form2.Show; 
  Form2.Update; 
  while Form2.Timer1.Enabled do 
    Application.ProcessMessages;// Вот эту строку не так написал!!! 
  Application.CreateForm(TForm1, Form1); 
  Form2.Hide; 
  Form2.Free; 
  Application.Run; 
end. 


Вот такие дела, теперь разобрался!!! Всем большое прибольшое спасобо!!! 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)