Delphi6のPersonal版を使用しています。初心者です。
for文を使って数字の0から5までを順番にLabelに表示させたいとき、
for i := 0 to 5 do
begin
label1.caption := IntToStr(i);
end;
end;
としても「5」しか表示されません。
Application.ProcessMessagesやsleep()を挿入しても
効果がありません。
初歩的な質問で申し訳ないのですが、
どうすればよいのか、是非教えてください。お願いします。
for i := 0 to 5 do
begin
label1.caption := IntToStr(i);
Application.ProcessMessage;
Sleep(1000); //単位msec
end;
end;
こんな感じでどうでしょう?
追加です、Sleep関数の引数が小さすぎると、質問のような状況になると思います。
Sleepの間は固まったようになりますけどね。
TTimerを使った方が簡単にできると思います。
すいません!基本的な構造から理解できていませんでした。
時間がたつと変化するというのではなく、
Buttonをクリックするたびに0→1→2…と
表示を変えていきたいのです。
@っしーさん、にしのさん、せっかくお答えいただいたのに申し訳ありません。
(教えていただいた内容は理解できました)
どうぞよろしくお願いします。
こういうことですか?
procedure TForm1.FormCreate(Sender: TObject);
begin
Label1.Caption := '0'; //起動時に0をセット
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
//+1する
Label1.Caption := IntToStr(StrToInt(Label1.Caption) + 1);
end;
グローバル変数iを定義
procedure TForm1.Button1Click(Sender: TObject);
begin
//+1する
Label1.Caption := IntToStr(Inc(i));
end;
とか?
>Label1.Caption := IntToStr(Inc(i));
Incは値を返さないのでは?
どうもありがとうございます!
for文にこだわりすぎてました。
初心者999さんの方法で解決したのですが、
5までで終わらせたいときはどうすればよいのでしょうか?
何度もすみません…
//CounterはForm1のCreate時に0に初期化してください
var
Counter: integer;
const
MaxCount: integer = 5;
procedure TForm1.Button1Click(Sender: TObject);
begin
if Counter < (MaxCount+1) then begin
Inc(Counter);
Label1.Caption := IntToStr(Counter);
end begin
ShowMessage('最大カウント数を超えました');
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Label1.Caption := '0'; //起動時に0をセット
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
//+1する
if Lable1.Caption = '5' Then
ShowMessage('最大カウント数を超えました')
else
Label1.Caption := IntToStr(StrToInt(Label1.Caption) + 1);
end;
とか?
※変数Counterのカウントアップ部分が間違ってました。
var
Counter: integer;
const
MaxCount: integer = 5;
procedure TForm1.Button1Click(Sender: TObject);
begin
if Counter < (MaxCount+1) then begin
Label1.Caption := IntToStr(Counter);
Inc(Counter); //ココ
end begin
ShowMessage('最大カウント数を超えました');
end;
end;
おかげさまで、動かすことができました。
お答え頂いた皆さん、本当にありがとうございました。
ツイート | ![]() |