Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.09.2009, 19:57
denmart denmart вне форума
Прохожий
 
Регистрация: 12.06.2009
Сообщения: 9
Репутация: 10
По умолчанию Окно предзагрузки програмы

Доброе время суток! Имеется рабочая форма. Как добавить в приложение форму, которая при запуске приложения включалась бы первой, а по истичении какого-то времени включалась вторая(первая при этом пропадала). Спасибо!!!
Ответить с цитированием
  #2  
Старый 17.09.2009, 20:23
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Как вариант - что-то вроде этого (привязка к событию по таймеру, но можно и к др.событиям) :

Код:
program FODB_Query;
uses
  ...,                  
  Forms,
  fdb_logoform_01 in 'fdb_logoform_01.pas' {Form_Logo_01},
  fdb_logoform_02 in 'fdb_logoform_02.pas' {Form_Logo_02},
  ...;          

{$R *.res}

begin
     Application.Initialize;

     //------------------------------------
     //Создается 1-я форма
     Form_Logo_01 := TForm_Logo.Create(nil);
     Form_Logo_01.Show;
     Form_Logo_01.lbl_State.Caption:='Сообщение-1 на ЛогоФорме-1 ...';
     Application.ProcessMessages;
     //------------------------------------                                                                            

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

=======================================

  
type
  TForm1 = class(TForm)
    ...        
    iLogo : integer;                                                  

  end;
          
procedure TForm1.FormCreate(Sender: TObject);
begin
  ...      
  iLogo := 1;                                                  
  ...      
  
  Timer1.Enabled:=true;
end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Enaled:=false;
  Label_DT.Caption:=DateTimeToStr(NOW);

  if iLogo=5 then begin                                               
     //Уничтожается 2-я форма
     if Form_Logo_02<>nil then begin
        FreeAndNil(Form_Logo_02);
        Form_Logo_02:=NIL;
        iLogo := iLogo+1;                                                  
     end;
  end;          
    
  if iLogo=4 then begin                                               
     //Создается 2-я форма
     Form_Logo_02 := TForm_Logo.Create(nil);
     Form_Logo_02.Show;
     Form_Logo_02.lbl_State.Caption:='Сообщение-1 на ЛогоФорме-2 ...';
     iLogo := iLogo+1;                                                  
     Application.ProcessMessages;
  end;          
    
  if iLogo=3 then begin                                               
     //Уничтожается 1-я форма
     if Form_Logo_01<>nil then begin
        FreeAndNil(Form_Logo_01);
        Form_Logo_01:=NIL;
        iLogo := iLogo+1;                                                  
     end;
  end;          

  if iLogo=2 then begin
     if Form_Logo_01<>nil then begin
        Form_Logo_01.lbl_State.Caption:='Сообщение-3 на ЛогоФорме-1 ...';
        Application.ProcessMessages;
        iLogo := iLogo+1;                                                  
     end;
  end;          
    
  if iLogo=1 then begin                                               
     if Form_Logo_01<>nil then begin
        Form_Logo_01.lbl_State.Caption:='Сообщение-2 на ЛогоФорме-1 ...';
        Application.ProcessMessages;
        iLogo := iLogo+1;                                                  
     end;
  end;          

  Timer1.Enaled:=true;
    
end;
Ответить с цитированием
  #3  
Старый 17.09.2009, 21:24
denmart denmart вне форума
Прохожий
 
Регистрация: 12.06.2009
Сообщения: 9
Репутация: 10
По умолчанию

а можно ли как-то попроще(я новичок ). Задача заключается в том, что бы при загрузке программы сначала появлялся логотип(картинка) а через, например, 3 секунды появлялась сама програма
Ответить с цитированием
  #4  
Старый 17.09.2009, 21:54
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

denmart, для вас создавалась справочная система Delphi.
Цитата:
Сообщение от Delphi help

Displaying a SplashScreen
__________________________________________________ ____________
The following two event handlers display and close a form called SplashScreen before the application's main form opens. The constant Startup is declared in Form1's interface part. The first event handler calls the Show method of SplashScreen from Form1's OnActivate event.

Delphi example

procedure TForm1.FormActivate(Sender: TObject);
begin
if Startup then
begin
Startup := False;
SplashScreen.Show;
end;
end;

SplashScreen contains a Timer component whose Interval property is set to 3000, so the form is displayed for three seconds and then closes. The form's Close method is attached to the timer component's OnTimer event.

Delphi example

procedure TForm2.Timer1Timer(Sender: TObject);

begin
Close;
end;
Ответить с цитированием
  #5  
Старый 17.09.2009, 22:01
denmart denmart вне форума
Прохожий
 
Регистрация: 12.06.2009
Сообщения: 9
Репутация: 10
По умолчанию

Спасибо - буду розбиратся
Ответить с цитированием
  #6  
Старый 17.09.2009, 22:08
denmart denmart вне форума
Прохожий
 
Регистрация: 12.06.2009
Сообщения: 9
Репутация: 10
По умолчанию

If Startup then begin - пишет ошибку
[Error] Unit1.pas(27): Undeclared identifier: 'Startup'
[Fatal Error] Project1.dpr(6): Could not compile used unit 'Unit1.pas'
Ответить с цитированием
  #7  
Старый 17.09.2009, 23:11
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

Цитата из цитаты:
Цитата:
Цитата:
Сообщение от Delphi help
The constant Startup is declared in Form1's interface part.
Ответить с цитированием
  #8  
Старый 18.09.2009, 01:19
denmart denmart вне форума
Прохожий
 
Регистрация: 12.06.2009
Сообщения: 9
Репутация: 10
По умолчанию

Как её приавильно объявить? Я, конечно, извеняюсь за такие глупые вопросы, но все когда-то были новичками.
Ответить с цитированием
  #9  
Старый 18.09.2009, 13:25
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

1. Создаете форму (это Ваша ЛогоФорма - кот. будет висеть до высвечивания главного окна приложения).
Например, ее имя Form_Logo. Устанавливаете свойство (у нее) FormStyle:=fsStayOnTop.

2. Выбираете меню : Project -> View Source

3. Там будет примерно это :

Код:
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.  


4. Вы ручками добавляете ЭТО:

Код:
begin
  Application.Initialize;

  //---------------------------                                                                                  
  Form_Logo := TForm_Logo.Create(nil);
  Form_Logo.Show;
  Application.ProcessMessages;  
  //---------------------------                                                                                  
    
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.  


5. На форму (главную) кидаете TTimer и свойству Interval присваиваете значение 3000 (3 секунды).

6. Создаете обработчик события Таймера.

Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Enaled:=false;

  //---------------------------                                                                                  
  //Уничтожается ЛогоФорма
  if Form_Logo<>nil then begin
     FreeAndNil(Form_Logo);
     Form_Logo:=NIL;
  end;  
  //---------------------------                                                                                  

end;


7. Вроде бы и все.
Ответить с цитированием
  #10  
Старый 18.09.2009, 13:35
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Как вариант можно попробовать это.

Код:
procedure MyDelay(mSec : integer);
//Задержка на заданное ко-во миллисекунд                                                                                      
var
  iStart, iStop: DWORD;
begin
  iStart := GetTickCount;
  repeat
    iStop := GetTickCount;
    sleep(10);
    Application.ProcessMessages;
  until (iStop - iStart) >= mSec;
end;


Код:
begin
  Application.Initialize;

  //---------------------------                                                                                  
  Form_Logo := TForm_Logo.Create(nil);
  Form_Logo.Show;
  MyDelay(3000);                
  //---------------------------                                                                                  
    
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.  


Тогда и таймер не нужен будет.

P.S.
Честно признаюсь, что я такой вариант не "щупал" ...
Ответить с цитированием
  #11  
Старый 18.09.2009, 13:56
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Sorry.
Забыл про "мусор" ...

Код:
begin
  Application.Initialize;

  //------------------------                                                                                  
  Form_Logo := TForm_Logo.Create(nil);
  Form_Logo.Show;
  MyDelay(3000);                
  //............................                                                                          
  if Form_Logo<>nil then begin
     FreeAndNil(Form_Logo);  //!!!
     Form_Logo:=NIL;
  end;  
  //............................                                                                          
  //---------------------------                                                                                  
    
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.  
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:57.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter