for i := 1 to 100 do
begin
if Flg = True then
//処理
else
Application.MessageBox('エラー','Error',MB_OK);
end;
常にfalseだった場合にメッセージボックスがたくさん出てきてしまいます。
画面にメッセージボックスが表示されていたら、新しいメッセージボックス表示させないようにするには、どうしたらいいのですか?
簡単な話し、常にFalseにならないようにします。
どうしてもFalseになるのなら、もうひとつ変数を用意して、
両方がFalseのときのみダイアログが出るようにすればいいでしょう。
こんにちは。前後の処理は分かりませんが、上記のコードでは、Flgが一度FalseになったらFlgにTrueを代入する箇所はありませんので、メッセージボックスを一度表示したらBreak手続きでforループを抜けるようにされたらどうでしょう。
たかみちえさん、GREENさん、ありがとうございます。
例の書き方が下手でしたね。
えっと、例をコピぺして(i,Flgは宣言してね)実行してもらえばわかるんですけど、メッセージボックスが100個表示されますよね?(メモリ次第ですけど)
このとき最初の1個目だけを表示させて、残り99個は表示されないようにしたかったのです。
> どうしてもFalseになるのなら、もうひとつ変数を用意して、
> 両方がFalseのときのみダイアログが出るようにすればいいでしょう。
Flg:Boolean;
i,Flg2:Integer;
var
Flg2 := 10; //てきとうに
for i := 1 to 100 do begin
if Flg = True then
//処理
else begin
if Flg2 = 1 then
Flg2 := Application.MessageBox('エラー','Error',MB_OK);
end;
end;
で解決できました。ありがとうございました。
ツイート | ![]() |