Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.04;
Скачать: 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 вся ветка

Текущий архив: 2002.07.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
14-10007
Fissher
2002-06-04 16:27
2002.07.04
На чем лучше писать проект????????


14-9963
ev
2002-06-01 14:17
2002.07.04
микроконтроллеры


4-10064
DiGiTaL
2002-05-07 16:02
2002.07.04
Как узнать под какой операционкой запущено приложение?


14-9973
VJar
2002-06-02 00:29
2002.07.04
Ищу компоненту или исходник


4-10047
UniNik
2002-05-06 09:54
2002.07.04
SetEnvVariable