Если приложение делает работу и не обрабатывает никаких сообщений в течение этого короткого периода времени, вы можете просто сделать
procedure TForm3.Button1Click(Sender: TObject);
begin
Form4.Show;
try
Sleep(2000);
finally
Form4.Hide;
end;
end;
где Form4
является «Пожалуйста, подождите» форму (которая fsStayOnTop
) и Sleep(2000)
Символизирует проделанная работа.
Теперь лучший способ сделать это на заднем плане (возможно, в отдельном потоке), или, по крайней мере, вы должны ProcessMessages
время от времени в медленном процессе. Если вы сделаете последнее, эквивалент Sleep(2000)
все равно не вернется, пока процесс не будет завершен, но вам нужно написать
procedure TForm4.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := false;
end;
в «Пожалуйста, подождите» диалоговое окно, поэтому он не может быть закрыт (даже с Alt + F4).
Если вы используете темы или что-то еще более сложное, я думаю, что мне понадобится дополнительная информация, чтобы предоставить соответствующий ответ.
«... самый простой способ написать ...» и «код-гольф» - можно ли одновременно делать одновременно? просто интересно ... – eumiro
Да, возможно, теги нелепо. Легко писать, я имею в виду, не требуя создания новой формы. Вы можете сказать то же самое о [Delphi] и [Code-Golf] –
Это не Code-Golf. Пожалуйста, прочитайте [** Code-Golf About Page **] (http://stackoverflow.com/tags/code-golf/info). –