Форум: "Основная";
Текущий архив: 2002.07.04;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c