1

情報を共有できることを嬉しく思います。

すみません、2 つの FORMS を同時に実行する方法を知っている人はいますか?

つまり、FORM1 の 1 つのボタンをクリックして FOR を実行し、FOR の値を FORM2 の LABEL に設定します。

FORM1 のいくつかのコード:

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

私はこれを見たいだけです:

if.... Form1->Label1->Caption= 1 の場合も 1 でなければForm2->Label1->Captionなりません。FORM2 は、最後の結果である 10,000 だけを表示します。

助けていただければ幸いです。ありがとうございました !

4

1 に答える 1

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 を呼び出して、おそらく時間のかかる処理が行われる前に、コントロールを強制的に再描画します。Update を使用して、Windows ペイント メッセージの到着を待てないユーザーに即座にフィードバックを提供します。

更新によってコントロールが無効になることはありませんが、既に無効になっている領域が強制的に再描画されるだけです。

Application->ProcessMessages()も機能しますが、正しい選択ではありません。アプリケーションの実行を中断して、メッセージ キューを処理できるようにします。ProcessMessagesはるかに遅くなる可能性があります。

(*) Remyのヒントが元の回答よりも絶対に優れていたため変更 ( Updatevs ProcessMessages)

于 2014-11-17T14:10:20.087 に答える