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;
label1.Caption := ' Start ';
の次に
label1.Repaint;
または
label1.Update;
を追加してみるのは、いかがですか?
LabelのCaptionプロパティの変更はWindowsに再描画を要求しますが、実際に再描画が行われるのはイベントハンドラから戻った後になります。
これを任意の時点で強制的に再描画させるにはRefresh(またはRepaint)を使用します。
begin
Label1.Caption := 'Start';
Refresh;
Winapi.Windows.Beep(330,300);
...
初心者の質問に親切に答えてくださり,ありがとうございました。
解決しました。
ツイート | ![]() |