Labelの変更が音の出る前に行われません

解決


SR400  2024-03-18 17:21:55  No: 151408

Win11とDelphi11CEで以下のコードを作成しました。
Label1の表示が「Start」に変更してから,音が鳴り,鳴り終わったら
Label1が「End」になると期待したのですが,「Start」と表示されずに
音が鳴り,その後「End」が表示されました。
どうやったら「Start」を音のなる前に表示させられるでしょうか。

procedure TForm8.Button1Click(Sender: TObject);
begin
  label1.Caption := ' Start ';
    Winapi.Windows.Beep(330,300);//ミ
    Winapi.Windows.Beep(349,300);//ファ
  label1.Caption := ' End ';
end;


igy  2024-03-18 22:36:57  No: 151409

label1.Caption := ' Start ';
の次に
label1.Repaint;
または
label1.Update;
を追加してみるのは、いかがですか?


HFUKUSHI  2024-03-18 22:50:56  No: 151410

LabelのCaptionプロパティの変更はWindowsに再描画を要求しますが、実際に再描画が行われるのはイベントハンドラから戻った後になります。
これを任意の時点で強制的に再描画させるにはRefresh(またはRepaint)を使用します。
begin
  Label1.Caption := 'Start';
  Refresh;
  Winapi.Windows.Beep(330,300);
  ...


SR400  2024-03-19 16:25:42  No: 151411

初心者の質問に親切に答えてくださり,ありがとうございました。
解決しました。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加