メッセージボックスを1度だけ表示するには?

解決


いちに  2002-11-09 23:19:49  No: 2035

for i := 1 to 100 do
begin
  if Flg = True then
    //処理
  else
    Application.MessageBox('エラー','Error',MB_OK);
end;
常にfalseだった場合にメッセージボックスがたくさん出てきてしまいます。
画面にメッセージボックスが表示されていたら、新しいメッセージボックス表示させないようにするには、どうしたらいいのですか?


たかみちえ  URL  2002-11-10 00:47:18  No: 2036

簡単な話し、常にFalseにならないようにします。

  どうしてもFalseになるのなら、もうひとつ変数を用意して、
両方がFalseのときのみダイアログが出るようにすればいいでしょう。


GREEN  2002-11-10 01:37:20  No: 2037

こんにちは。前後の処理は分かりませんが、上記のコードでは、Flgが一度FalseになったらFlgにTrueを代入する箇所はありませんので、メッセージボックスを一度表示したらBreak手続きでforループを抜けるようにされたらどうでしょう。


いちに  2002-11-10 02:13:50  No: 2038

たかみちえさん、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;
で解決できました。ありがとうございました。


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








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