Вниз
Скачать: CL | DM;

Pause   Найти похожие ветки 

 
KIG_S ©   (2002-06-21 09:18) [0]

Вопрос конечно банальный но КАК сделать появление Splash окна с
паузой
. Тоесть появилось Splash окно и зависло на X секунд.


 
VDen ©   (2002-06-21 09:19) [1]

Перед уничтожением Splash sleep(X*1000)


 
Юрий Зотов ©   (2002-06-21 12:15) [2]

Sleep - это ОЧЕНЬ плохо. Потому что во время паузы окно Splash"а не будет перерисовываться - полная лажа получится, а не Splash.

А вот так будет нормально.

const
Pause := 2000; // миллисекунд
var
StartTick: DWORD;
...
StartTick := GetTickCount;
while StartTick + Pause < GetTickCount do
Application.ProcessMessages;

Надо только иметь в виду, что этот цикл даст 100%-ную загрузку процессора, поэтому его лучше использовать при коротких паузах. Если же пауза должна быть достаточно длинной, то Вам нужен цикл с вызовом MsgWaitForMultiplyObjects (c QS_PAINT) и вызовом Application.ProcessMessages, если результат не WAIT_TIMEOUT.


 
z-voxel ©   (2002-06-22 17:58) [3]

Поставь себе RxLibrary 2.75


 
Александр ©   (2002-06-22 19:01) [4]

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);



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.007 c
14-10016
Landgraph
2002-06-02 11:42
2002.07.04
Чем отличается...


3-9736
Alex-kosmonavt
2002-06-11 10:06
2002.07.04
Как записать картинки в Blob поля базы данных?


6-9938
Jazzy$
2002-04-23 10:27
2002.07.04
Как зная только имя пользователя получить его домашний какталог.


7-10027
der
2002-04-10 11:33
2002.07.04
печать напрямую на LPT.


14-10012
Аня
2002-06-04 16:36
2002.07.04
D5 vs D6




   Наверх