![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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.
|