Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Label1->Caption = a;


Автор: Гость_Nick 30.12.2003, 22:49
Имеется цикл:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int a;
for(a=0;a<100;a++) {
Label1->Caption = a;
Sleep(100);
Button1->Caption = a*2;
}
}
Почему бутон меняется, а лейбл меняется по окончании циклаconfused.gif

Автор: Waters 31.12.2003, 00:56
Добавьте в цикл Application->ProcessMessages();

P.S. Ответ на вопрос - из-за Sleep имхо.

wbr

Автор: Ars 5.1.2004, 10:39
Цитата
Добавьте в цикл Application->ProcessMessages();

P.S. Ответ на вопрос - из-за Sleep имхо.


Не из-за Sleep, а из-за того, что пока крутится цикл, оконные сообщения не обрабатываются.
Application->ProcessMessages(); как раз дает возможность это сделать. Еще вариант - если нужно обновлять только лэйбл - Label1->Update();

Автор: Waters 7.1.2004, 02:47
Цитата
Не из-за Sleep, а из-за того, что пока крутится цикл, оконные сообщения не обрабатываются.

знаю. smile.gif Торможу я...

Цитата
Почему бутон меняется, а лейбл меняется по окончании цикла

Видимо, изменение TButton->Caption вызывает сразу Update(), а изменение TLabel->Caption - нет.

wbr

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)