PDA

Просмотр полной версии : [Помогите!] С циклом


gum_classis
27.10.2011, 22:50
Вот у меня такой вопрос как в цикле While сделать задержку вот пример кода
var a:integer;
begin
a:=1
while a<>100 do
begin
a=a+1;
Label1.caption:=intTostr(a);
end;
end;
Этот код в каждый круг цикла должен переменной а добавлять +1 так прога это и делает вот только мгновенно так вот как сделать чтобы прога добавляла постепенно.
Возможно ли это сделать через цикл "While"

J-Fobos
27.10.2011, 23:05
вставить в цикл sleep (1000), но если такое делать в главном потоке, то он будет останавливать всю прогу, будет выглядеть что программа подвисает.

зы: 1000 = 1 сек

gum_classis
27.10.2011, 23:15
вставить в цикл sleep (1000), но если такое делать в главном потоке, то он будет останавливать всю прогу, будет выглядеть что программа подвисает.

зы: 1000 = 1 сек
Программа просто зависла никакого эффекта

Dinmaite
27.10.2011, 23:20
Программа просто зависла никакого эффекта
Я так думаю "зависла" значит остановилась.
И будет стоять пока не выполнится цикл.
Ну и после этого будет перерисовано окно.

gum_classis
27.10.2011, 23:27
Я так думаю "зависла" значит остановилась.
И будет стоять пока не выполнится цикл.
Ну и после этого будет перерисовано окно.
А как сделать чтобы программа не "остановилась" а прибавляла +1 к переменной "а" то есть в label отображался как бы таймер который увеличивал бы число на 1 каждую секунду

J-Fobos
27.10.2011, 23:31
gum_classis, либо заюзать такой компонент как таймер, либо делать цикл в отдельном потоке. Либо перерисовывать окно в каждой итерации цикла.

gum_classis
27.10.2011, 23:36
gum_classis, либо заюзать такой компонент как таймер, либо делать цикл в отдельном потоке. Либо перерисовывать окно в каждой итерации цикла.
Через таймер я и сам могу мне именно через этот цикл надо прошу помощи!

maxilam
28.10.2011, 08:31
После sleep (1000);
напиши
Application.ProcessMessages;
ProcessMessages - заставляет программу обработать все сообщения находящиеся в очереди

gum_classis
28.10.2011, 13:45
После
Код:

sleep (1000);

напиши
Код:

Application.ProcessMessages;

ProcessMessages - заставляет программу обработать все сообщения находящиеся в очереди
Программа по прежнему зависла и нечего не делает!

lolwut98
28.10.2011, 13:53
[Ссылки могут видеть только зарегистрированные и активированные пользователи]