Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Netscaper

Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вовсе не обязательно. При выполнении какого-нибудь цикла можно сделать так:
Код: Выделить весь код
 void __fastcall TForm1::Button1Click(TObject *Sender)
 {
         for(int i=0;i<100000;i++)
         {
                 ProgressBar1->Position = i;
                 Application->ProcessMessages();
         }
 }
Т.е. давать возможность приложению обработать очередь сообщений.
Если TThread, то достаточно создать наследный класс, скажем, TMyThread, в котором перекрыт абстрактный метод Execute, а также введен новый ShowMeth, который меняет значение ProgressBar.
Где-нибудь в Execute необходимо вызвать метод Synchronize:
Код: Выделить весь код
         Synchronize(ShowMeth);
Который обеспечит критическое выполение метода ShowMeth (критическая секция).

Последний раз редактировалось Netscaper, 13-12-2004 в 20:25.


Отправлено: 16:18, 13-12-2004 | #2