2014-11-17 6 views
1

С удовольствием передадим вам некоторую информацию.Как запустить две формы в C++ Builder

Извините, не знает ли кто-нибудь, как работать одновременно две FORMS?

Я имею в виду, что я нажимаю кнопку BUTTON на FORM1 и устанавливаю значения FOR в LABEL на FORM2.

Вот некоторые коды в форме Form1:

void __fastcall Form1::Button1Click(TObject *Sender){ 
    int i = 0; 
    for (i=0;i<=10000;i++){ 
    Form1->Label1->Caption = i; 
    Form2->Label1->Caption = i; 
    } 
} 

Я просто хочу, чтобы увидеть это:

если .... Form1->Label1->Caption = 1, Form2->Label1->Caption должен быть 1 тоже и так далее. FORM2 показывает мне только последний результат, который составляет 10 000.

Я ценю любую помощь. Спасибо!

ответ

2

Просто позвоните Update(): (*)

void __fastcall Form1::Button1Click(TObject *Sender) 
{ 
    for(int i = 0; i <= 10000; ++i) 
    { 
    Form1->Label1->Caption = i; 
    Form2->Label1->Caption = i; 

    Form1->Label1->Update(); 
    Form2->Label1->Update(); 
    } 
} 

Update():

Процессы любые ожидающие краски сообщения немедленно.

Call Update, чтобы переустановить элемент управления до того, как он будет больше, возможно, занимает много времени, обработка . Используйте Update для немедленной обратной связи с пользователем, который не может ждать для сообщения о краске Windows.

Обновление не отменяет контроль, но просто заставляет перерисовку любых регионов, у которых уже признана недействительной.

Application->ProcessMessages() также будет работать, но это не правильный выбор: он прерывает выполнение приложения, чтобы он мог обрабатывать очередь сообщений. ProcessMessages может быть медленнее.

(*) изменилось по сравнению с Remy «s намек был абсолютно лучше, чем оригинальный ответ (Update против ProcessMessages)

+0

Здравствуйте manilio, спасибо за ответы. Я уже пробовал это решение «ProcessMessages()», и он просто отлично работает в первой форме, он не обновляет второй. – Justabeginner

+0

Это работает для меня. Вы уверены, что вызов 'ProcessMessages()' находится внутри цикла for? – manlio

+0

Да, вы правы! моя проблема заключалась в том, что я назвал Form2 с ShowModal(), и его нужно вызвать с помощью Show(). – Justabeginner