Сведения о программе, авторские права и т.д., лучше оформить в
виде отдельной формы и показывать ее при запуске программы (как это сделано
в Word).
Сделать это не сложно:
1. Создаете форму (например
SplashForm).
2. Объявляете ее свободной (availableForms).
3. В Progect
Source вставляете следующее (например):
program Splashin;
uses
Forms,
Main in 'MAIN.PAS',
Splash in 'SPLASH.PAS'
{$R *.RES}
begin
try
SplashForm := TSplashForm.Create(Application);
SplashForm.Show;
SplashForm.Update;
Application.CreateForm(TMainForm, MainForm);
SplashForm.Hide;
finally
SplashForm.Free;
end;
Application.Run;
end.
И
форма SplashForm держится на экране пока выполняется Create в главной форме.
Но иногда она появляется и пропадает очень быстро, поэтому нужно сделать
задержку:
1. Добавляете на форму таймер с событием:
procedure TSplashForm.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := False;
end;
2. Событие onCloseQuery для формы:
procedure TSplashForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := Not Timer1.Enabled;
end;
3. И перед SplashForm.Hide; ставите цикл:
repeat
Application.ProcessMessages;
until SplashForm.CloseQuery;
4. Все! Осталось установить на таймере период задержки 3-4
секунды.
5. На последок, у такой формы желательно убрать
Caption:
SetWindowLong (Main.Handle,GWL_STYLE, GetWindowLong(Main.Handle,
GWL_STYLE) AND NOT WS_CAPTION OR WS_SIZEBOX);
Коментарий от
"Sevastyanov Andrey" (mystic2000@newmail.ru)
Работает это, если честно,
коряво. Если прога грузиться долго, то наступив на эту заставку другим
приложением, а потом убрав ее вы получите серое пятно до конца
загрузки приложения. А если оно грузиться как Delphi 6...
По-моему, лучше
создавать splash-форму в отдельном потоке.
Коментарий от "digimaster"
(digimaster@mail.ru)
Лучше сделать так:
procedure TForm1.FormCreate(Sender: TObject);
var
t:integer;
begin
SplashForm:=TSplashForm.Create(nil);
SplashForm.Show;
t:=GetTickCount;
while (GetTickCount-t)<5000 do begin //пока не прошло 5000 милливек
sleep(0);
Application.ProcessMessages;
if not SplashForm.Visible then break;
end;
//Application Init Code here...
SplashForm.Free;
end;
Не
забудьте добавить SplashForm unit в список USES главной формы.
|
Copyright ©
"Мастера DELPHI" E-mail:
delphi@mastak.com
http://www.delphimaster.ru |
Источник получения информации: http://www.delphimaster.ru
|