掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
updownイベントのエラー処理について (ID:34364)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
edit2にedit1を足すプログラムなのですね。 そう書き直してみました。 エラー処理しなくても良いといったのは、 「プログラムがedit1が100を超えたらエラーメッセージを出すだけ」と思い込んでいたからです。 (こちらの再現では)エラー処理(メッセージが)自体がループの原因になっていたからもあります。 また、こちらの勘違いもあります。 単に「メッセージを出すこと」=「エラー処理」、と早合点したからもあります。 プログラム上エラーを通知する必要があるのですね? Delphiのバグなのか、そうでないのか、 合計が100超えた時に、Updownボタンを押して、 EditからチェンジイベントからShowmessageが呼び出されると、 何回か、フォームのどこを押してもUpdown1が押されてしまいます。 edit1からのShowmessageを取り消すと、そのバグは起きません(?_?)。 謎です。 WinXPにてDelphi3,Delphi7でそれぞれ実行してみましたが、 どちらも同じバグ(?)が出ました。 これの解決法はお手上げで解りませんでした^^; 以下がそのコードです。 バリバリの初心者コードですが^^; procedure TForm1.FormCreate(Sender: TObject); begin updown1.Associate := edit1; updown2.Associate := edit2; end; procedure TForm1.Edit1Change(Sender: TObject); begin if 100 < strtoint(edit1.Text)+ strtoint(edit2.text) then begin edit1.Text := inttostr(100 - strtoint(edit2.Text)); showmessage('エラーです'); end; if 100 < strtoint(edit1.Text) then begin edit1.Text := '100'; showmessage('エラーです'); end; end; procedure TForm1.Edit2Change(Sender: TObject); begin Edit1Change(Sender); end; procedure TForm1.Button1Click(Sender: TObject); begin edit2.Text := inttostr(strtoint(edit2.Text) + strtoint(edit1.Text)); if 100 < strtoint(edit1.Text)+ strtoint(edit2.text) then begin edit1.Text := '0'; edit2.Text := '100'; showmessage('エラーです'); end; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.