|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Окно предзагрузки програмы
Доброе время суток! Имеется рабочая форма. Как добавить в приложение форму, которая при запуске приложения включалась бы первой, а по истичении какого-то времени включалась вторая(первая при этом пропадала). Спасибо!!!
|
#2
|
|||
|
|||
Как вариант - что-то вроде этого (привязка к событию по таймеру, но можно и к др.событиям) :
Код:
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
|
|||
|
|||
а можно ли как-то попроще(я новичок ). Задача заключается в том, что бы при загрузке программы сначала появлялся логотип(картинка) а через, например, 3 секунды появлялась сама програма
|
#4
|
|||
|
|||
denmart, для вас создавалась справочная система Delphi.
Цитата:
|
#5
|
|||
|
|||
Спасибо - буду розбиратся
|
#6
|
|||
|
|||
If Startup then begin - пишет ошибку
[Error] Unit1.pas(27): Undeclared identifier: 'Startup' [Fatal Error] Project1.dpr(6): Could not compile used unit 'Unit1.pas' |
#7
|
|||
|
|||
Цитата из цитаты:
Цитата:
|
#8
|
|||
|
|||
Как её приавильно объявить? Я, конечно, извеняюсь за такие глупые вопросы, но все когда-то были новичками.
|
#9
|
|||
|
|||
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
|
|||
|
|||
Как вариант можно попробовать это.
Код:
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
|
|||
|
|||
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. |