Panel.Font.Colorを時間をずらして変えるには?

解決


なんとん  2004-01-06 15:58:15  No: 6543  IP: 192.*.*.*

Panelのフォント色を変えようとしていますが,sleepでは
思ったようにできません。

やりたいことは,Panels[P1].Font.Colorを赤にしたあと,
400ミリ秒後に Panels[P2].Font.Color も赤に,さらに
400ミリ秒後に元の色に戻すことです。

下記のコードでは,失敗です。
  procedure IroHenko2(P1, P2: integer);
  begin
     Panels[P1].Color := clYellow;
     Panels[P2].Color := clYellow;
       sleep(400);
       Panels[P1].Font.Color := clRed;
       sleep(400);
       Panels[P2].Font.Color := clRed;
       sleep(400);
       Panels[P1].Font.Color := clBlack;
       Panels[P2].Font.Color := clBlack;
  end;

どのようにすればいいのでしょうか。

編集 削除
Halbow  URL  2004-01-06 16:10:21  No: 6544  IP: 192.*.*.*

Halbow です。

色を変更するメッセージ処理をさせなくてはなりません。

procedure IroHenko2(P1, P2: integer);
  procedure Wait(duration:DWORD);
  begin
    Application.ProcessMessages;
    Sleep(duration)
  end;
begin
  Panels[P1].Color := clYellow;
  Panels[P2].Color := clYellow;
  Wait(400);
  Panels[P1].Font.Color := clRed;
  Wait(400);
  Panels[P2].Font.Color := clRed;
  Wait(400);
  Panels[P1].Font.Color := clBlack;
  Panels[P2].Font.Color := clBlack;
end;

編集 削除
なんとん  2004-01-06 16:30:53  No: 6545  IP: 192.*.*.*

Halbowさん,できました。

>色を変更するメッセージ処理
が必要なんですね。よく分かりました。

有難うございました。

編集 削除