Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Label не обновляется


Автор: Paran0ya 23.6.2006, 12:41
Доброго времени суток. Столкнулся с проблемой. После нажатия кнопки start, происходит некоторая последовательность действий. При этом на форме должны обновляться счетчики.

Код

void __fastcall TForm1::StartButtonClick(TObject *Sender)
{
    StartButton->Enabled = false;
    StopButton->Enabled = true;
    /*
         объявление переменных
         */
    while(!feof(fp)){
        fgets(str, 18, fp);
        str[19]='\0';
        strncpy(str1,str,strlen(str)-strlen(strstr(str,";")));
        strcpy(str2,strstr(str,";")+1);
        result = /*выполняется определенное действие */
        if (result == 16){
            int i;
            i = BadCount->Caption.ToInt();
            i++;
            BadCount->Caption = IntToStr(i);
        }
        if (result > 1000){
            int i;
            i = GoodCount->Caption.ToInt();
            i++;
            GoodCount->Caption = IntToStr(i);
        }
    }
    StartButton->Enabled = true;
    StopButton->Enabled = false;
}


Проблема заключается в том, что счетчики на форме не обновляются во время работы этой функции, а только после ее завершения.   

Автор: Fazil6 23.6.2006, 12:57
Код

      if (result > 1000){    
            int i;    
            i = GoodCount->Caption.ToInt();    
            i++;    
            GoodCount->Caption = IntToStr(i);    
        }
         // вызвать
    Application->ProcessMessages();
    }
    StartButton->Enabled = true;    
    StopButton->Enabled = false;
 

Автор: 586 23.6.2006, 13:00
Насколько я понял, твой счётчик - это GoodCount.
После изменения счётчика подставь
GoodCount->Repaint(); 

Автор: BreakPointMAN 23.6.2006, 13:21
TStaticText можно попробовать, кажется, он так называется. 

Автор: Paran0ya 23.6.2006, 13:45
Цитата(Fazil6 @ 23.6.2006,  12:57)
Код

      if (result > 1000){    
            int i;    
            i = GoodCount->Caption.ToInt();    
            i++;    
            GoodCount->Caption = IntToStr(i);    
        }
         // вызвать
    Application->ProcessMessages();
    }
    StartButton->Enabled = true;    
    StopButton->Enabled = false;

Спасибо, то что нужно, работает просто прекрасно =) 

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