━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ レンタル掲示板とクイズ投稿サイトを開発した櫻井文人の プログラムの考え方が身につくメルマガ『プログラムは考え方です』 ─────────────────────────────────── メルマガ発行人 櫻井文人のプロフィール ⇒ http://www.bunzin.net/program/prof.html ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ こんにちは、メルマガ発行人の櫻井文人です。 ツイッターはじめました。詳しくは編集後記で。 今回は、タイマープログラムの時間になった時のメッセージを 1箇所に集めてみます。 ─────────────────────────────────── 【おすすめ】 今年の冬もすごく寒いですね。 寒すぎて、なかなか寝付けません・・・ だからといって、暖房をガンガンかけようにも 電気代が気になります。 そんな時は、「湯たんぽ」なんかどうでしょう。 コチラ ⇒ http://www.moshimo.com/article/121691/103048 電気を使わないのでお財布にやさしく、 ポカポカと暖いので気持ちよく眠ることができますよ。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■■ メッセージを定数に設定して集める ─────────────────────────────────── それでは、さっそく時間になった時のメッセージを1箇所に集めてみましょう。 ■メッセージを集める まずはメッセージを一箇所に集めます。 プログラムのイベントループの前に、以下の5行を追加しました。 1行目:rem ********************************************** 2行目:rem タイムアップメッセージ 3行目:rem ********************************************** 4行目:Const MsgTimeUp_default ="時間になりました" 5行目:Const MsgTimeUp_3min = "ラーメンができました!のびないうちにどうぞ(^_^)" 各メッセージを定数「MsgTimeUp_default」と定数「MsgTimeUp_3min」に設定しています。 定数は変数とは違い、一度値を設定したら変えることができません。 定数はConstを使って定義します。 ■集めたメッセージを使うように修正 次に定数に定義したメッセージを使うように修正します。 まずは、「スタート」ボタンがクリックされた時に呼ばれる イベントハンドラ「clicked_start()」を修正します。 1行目:rem ********************************************** 2行目:rem イベントハンドラ「clicked_start()」 3行目:rem 「スタート」ボタンがクリックされた時の処理 4行目:rem ********************************************** 5行目:function clicked_start() 6行目: now_cnt = ie.Document.GetElementsByName("COUNTER")(0).value 7行目: If now_cnt = "" Then 8行目: MsgBox "秒数を入力してください。" 9行目: ElseIf IsNumeric(now_cnt) = false Then 10行目: MsgBox "秒数は数字で入力してください。" 11行目: ElseIf now_cnt < 1 Then 12行目: MsgBox "秒数は1秒以上で入力してください。" 13行目: Else 14行目: bef_sec = Second(Now) 15行目: timeup_msg = MsgTimeUp_default 16行目: status = "EXE_COUNT_DOWN" 17行目: End If 18行目:end function 15行目を「timeup_msg = "時間になりました"」から 「timeup_msg = MsgTimeUp_default」に修正しました。 今まではメッセージの文言をそのままtimeup_msg変数に格納していましたが、 定数として設定されたメッセージを格納するように修正しました。 同じように、「ラーメン(3分)」ボタンがクリックされた時に呼ばれる イベントハンドラ「clicked_noodle_3min()」も修正します。 1行目:rem ********************************************** 2行目:rem イベントハンドラ「clicked_noodle_3min()」 3行目:rem 「ラーメン(3分)」ボタンがクリックされた時の処理 4行目:rem ********************************************** 5行目:function clicked_noodle_3min() 6行目: ie.Document.GetElementsByName("COUNTER")(0).value = 180 7行目: timeup_msg = MsgTimeUp_3min 8行目: status = "EXE_COUNT_DOWN" 9行目:end function 7行目を「timeup_msg = "ラーメンができました!のびないうちにどうぞ(^_^)"」から 「timeup_msg = MsgTimeUp_3min」に修正しました。 ■メッセージがまとまりました というわけで、時間が来たときのメッセージが1箇所にまとまりました。 このように似たようなものを1箇所に集めておくと、 修正や追加などの管理がしやすくなります。 ■修正後のプログラム 以下が、修正後のタイマープログラムです。 ---------------------------------------------------------------------- rem プログラムの開始 rem ********************************************** rem お手軽タイマープログラム rem ********************************************** rem ********************************************** rem プログラムの準備 rem ********************************************** set w = WScript set ie = CreateObject("InternetExplorer.Application") ie.Width = 350 ie.Height = 130 ie.ToolBar = false ie.StatusBar = false ie.Resizable = false ie.Visible = true ie.Navigate "about:blank" do while ie.Busy w.sleep 100 loop html = "" _ + "<form name=""form1"" >" _ + " <table width=300><tr><td>" _ + " <input type=""hidden"" name=""CLICKED_PLUS"" value=""false"">" _ + " <input type=""hidden"" name=""CLICKED_MINUS"" value=""false"">" _ + " <input type=""hidden"" name=""CLICKED_START"" value=""false"">" _ + " <input type=""hidden"" name=""CLICKED_STOP"" value=""false"">" _ + " <input type=""hidden"" name=""NOODLE_3MIN"" value=""false"">" _ + " <input type=""hidden"" name=""CLICKED_CLOSE"" value=""false"">" _ + " <input type=""text"" name=""COUNTER"" size=5>" _ + " <input type=""button"" " _ + " onClick = ""getElementsByName('CLICKED_PLUS')(0).value = 'true';""" _ + " value=""+"">" _ + " <input type=""button"" " _ + " onClick = ""getElementsByName('CLICKED_MINUS')(0).value = 'true';""" _ + " value=""−"">" _ + " <br>" _ + " <input type=""button"" " _ + " onClick = ""getElementsByName('CLICKED_START')(0).value = 'true';""" _ + " value=""スタート"">" _ + " <input type=""button"" " _ + " onClick = ""getElementsByName('CLICKED_STOP')(0).value = 'true';""" _ + " value=""ストップ"">" _ + " <input type=""button"" " _ + " onClick = ""getElementsByName('NOODLE_3MIN')(0).value = 'true';""" _ + " value=""ラーメン(3分)"">" _ + " </td><td align=""right"" valign=""top"">" _ + " <input type=""button"" " _ + " onClick = ""getElementsByName('CLICKED_CLOSE')(0).value = 'true';""" _ + " value=""閉じる"">" _ + " </td></tr></table>" _ + "</form>" _ ie.Document.Body.InnerHtml = html ie.Document.Title = "お手軽タイマー" on error resume next ie.Document.GetElementsByName("COUNTER")(0).value = 180 status = "IDLE" bef_sec = 0 timeup_msg = "" rem ********************************************** rem タイムアップメッセージ rem ********************************************** Const MsgTimeUp_default ="時間になりました" Const MsgTimeUp_3min = "ラーメンができました!のびないうちにどうぞ(^_^)" rem ********************************************** rem イベントループ rem ********************************************** do while ie.Busy or status <> "CLOSE" If ie.Document.GetElementsByName("CLICKED_PLUS")(0).value <> "false" Then ie.Document.GetElementsByName("CLICKED_PLUS")(0).value = "false" clicked_plus() End If If ie.Document.GetElementsByName("CLICKED_MINUS")(0).value <> "false" Then ie.Document.GetElementsByName("CLICKED_MINUS")(0).value = "false" clicked_minus() End If If ie.Document.GetElementsByName("CLICKED_START")(0).value <> "false" Then ie.Document.GetElementsByName("CLICKED_START")(0).value = "false" clicked_start() End If If ie.Document.GetElementsByName("CLICKED_STOP")(0).value <> "false" Then ie.Document.GetElementsByName("CLICKED_STOP")(0).value = "false" clicked_stop() End If If ie.Document.GetElementsByName("NOODLE_3MIN")(0).value <> "false" Then ie.Document.GetElementsByName("NOODLE_3MIN")(0).value = "false" clicked_noodle_3min() End If If ie.Document.GetElementsByName("CLICKED_CLOSE")(0).value <> "false" Then ie.Document.GetElementsByName("CLICKED_CLOSE")(0).value = "false" clicked_close() End If If status = "EXE_COUNT_DOWN" Then exe_count_down() w.sleep 100 loop ie.Quit rem ********************************************** rem イベントハンドラ「clicked_plus()」 rem 「+」ボタンがクリックされた時の処理 rem ********************************************** function clicked_plus() now_cnt = ie.Document.GetElementsByName("COUNTER")(0).value If now_cnt = "" Then MsgBox "秒数を入力してください。" ElseIf IsNumeric(now_cnt) = false Then MsgBox "秒数は数字で入力してください。" Else ie.Document.GetElementsByName("COUNTER")(0).value = now_cnt + 1 End If end function rem ********************************************** rem イベントハンドラ「clicked_minus()」 rem 「-」ボタンがクリックされた時の処理 rem ********************************************** function clicked_minus() now_cnt = ie.Document.GetElementsByName("COUNTER")(0).value If now_cnt = "" Then MsgBox "秒数を入力してください。" ElseIf IsNumeric(now_cnt) = false Then MsgBox "秒数は数字で入力してください。" ElseIf now_cnt > 0 Then ie.Document.GetElementsByName("COUNTER")(0).value = now_cnt - 1 End If end function rem ********************************************** rem イベントハンドラ「clicked_start()」 rem 「スタート」ボタンがクリックされた時の処理 rem ********************************************** function clicked_start() now_cnt = ie.Document.GetElementsByName("COUNTER")(0).value If now_cnt = "" Then MsgBox "秒数を入力してください。" ElseIf IsNumeric(now_cnt) = false Then MsgBox "秒数は数字で入力してください。" ElseIf now_cnt < 1 Then MsgBox "秒数は1秒以上で入力してください。" Else bef_sec = Second(Now) timeup_msg = MsgTimeUp_default status = "EXE_COUNT_DOWN" End If end function rem ********************************************** rem イベントハンドラ「clicked_stop()」 rem 「ストップ」ボタンがクリックされた時の処理 rem ********************************************** function clicked_stop() status = "IDLE" end function rem ********************************************** rem イベントハンドラ「clicked_noodle_3min()」 rem 「ラーメン(3分)」ボタンがクリックされた時の処理 rem ********************************************** function clicked_noodle_3min() ie.Document.GetElementsByName("COUNTER")(0).value = 180 timeup_msg = MsgTimeUp_3min status = "EXE_COUNT_DOWN" end function rem ********************************************** rem イベントハンドラ「clicked_close()」 rem 「閉じる」ボタンがクリックされた時の処理 rem ********************************************** function clicked_close() status = "CLOSE" end function rem ********************************************** rem イベントハンドラ「exe_count_down()」 rem カウントダウン実行中の時の処理 rem ********************************************** function exe_count_down() now_cnt = ie.Document.GetElementsByName("COUNTER")(0).value now_sec = Second(Now) If bef_sec <> now_sec Then bef_sec = now_sec now_cnt = now_cnt - 1 ie.Document.GetElementsByName("COUNTER")(0).value = now_cnt End If If now_cnt <= 0 Then MsgBox timeup_msg status = "IDLE" End If end function rem プログラムの終了 ---------------------------------------------------------------------- ■次回のメルマガでは・・・ イベント駆動にプログラミングを使ったタイマープログラムのついては これで終わりになります。 次回からは、ファイルについて解説していく予定です。 ファイルについての考え方や使い方について少しずつ説明していきます。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■■ 編集後記 ─────────────────────────────────── いまさらながら、ツイッターをはじめてみました。 世間一般では、かなり流行っているようなので、 流れに乗り遅れまいと思い、ツイッターがどんなものかとはじめてみました。 櫻井のツイッター こちら ⇒ http://twitter.com/bunzinnet とりあえず、何気ない日常から何か役立ちそうな話までいろいろと つぶやいてみたいと思ってます。 最後までお読みいただき、ありがとうございました。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ●櫻井が開発したレンタル掲示板は コチラ ⇒ http://www.bunzin.gr.jp/m_board/ 画像のアップロードも可能なレンタル掲示板です。 無料ですのでお気軽にどうぞ。 ●櫻井が開発したクイズ投稿サイトは コチラ ⇒ http://www.bunzin.gr.jp/quiz/ あなたが考えたクイズを投稿することができます。 投稿されたクイズに回答することもできます。 無料ですのでお気軽にどうぞ。 ●プログラム用語辞典 コチラ ⇒ http://www.bunzin.net/program/dictionary/ ●お手軽!VBScriptを使ってみよう コチラ ⇒ http://www.bunzin.net/program/vbscript/ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ メルマガ発行人 櫻井文人 メルマガ発行責任者情報は コチラ ⇒ http://www.bunzin.net/program/mghsinfo.html アドレス変更と登録解除はコチラ ⇒ http://www.mag2.com/m/0000293166.html メルマガバックナンバーは コチラ ⇒ http://www.bunzin.net/program/mailmaga/backnumber/ 櫻井文人のプロフィール ⇒ http://www.bunzin.net/program/prof.html ご意見・ご感想はコチラ ⇒ bunzin●bunzin.gr.jp (メール送信の際は、●を@に置き換えてください。) (櫻井が確実に読みますが、返信は保障できません。) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ |