| |
|
|
|
第10回 日記アプリケーションを作る ―その6 入力機能の実装前回はファイル一覧機能を作成したので、今回は入力機能を作成していこう。指定した日付で日記のタイトルと本文を入力・保存し、再度その内容を表示するという機能だ。 仕様の確認とプログラムの内容さて、ここで第3回に考えた日記アプリケーションの仕様を確認しておこう。
以上の仕様にあわせて、今回は入力画面からファイルを保存する機能を追加していこう。ファイルを保存する機能は次の3つのステップを必要とする。
では1つずつ機能を追加していこう。 フォルダチェックのプログラムVisual Studio 2005を起動して準備をしたら、ソリューションエクスプローラから「editForm.vb」をダブルクリックして入力画面を表示する。そして、左ソフトキーの「保存」メニュをダブルクリックしてイベントコードを表示しよう。 まずはファイルパスを作成するコードである。 Private Sub saveMenu_Click(ByVal sender As System.Object, …
Dim filepath As String
filepath = "\My Documents\MyDiary\"
filepath = filepath + Me.editDate.Value.ToString("yyyy年MM月dd日")
filepath = filepath + ".txt"
End Sub
ファイル名の元となる日付はDateTimePickerコントロールから取得する。 DateTimePicker(editDate)の日付はeditDate.Valueで取得できる。これを文字列にするにはToString関数を使う。このときフォーマットを指定することができるのだ。"yyyy年MM月dd日"とすると2001年1月1日の形式で取り出すことができる。後は上記のように文字列の足し算をするだけだ。 ファイルパス = フォルダパス + ファイル名 + 拡張子 これで、ファイルパスが作成できた。続いてファイルチェックを行う。 ファイルの存在チェックのためのプログラムではファイルのチェックプログラムを実装しよう。以下のようにコード追加する。 Imports System.IO
Public Class editForm
Private Sub saveMenu_Click(ByVal sender As System.Object, …
Dim filepath As String
filepath = "\My Documents\MyDiary\"
filepath = filepath + Me.editDate.Value.ToString("yyyy年MM月dd日")
filepath = filepath + ".txt"
If File.Exists(filepath) = False Then
Dim sw As StreamWriter
sw = File.CreateText(filepath)
sw.Close()
End If
End Sub
End Class
ファイルがあるかどうかのチェックにはSystem.IO.File.Exists 関数を使用する。もしファイルがあればTrueをなければFalseを返してくる関数だ。 ここではIf文を使って条件判断を行う。File.Exit関数を読んで戻り値がFalseつまりファイルがなかったら空のテキストファイルを作成する処理を行う。テキストファイルを作成するための関数はFile.CreateTextである。 CreateTextでテキストファイルを作成すると、このファイルを扱うためのStreamWriterを返してくる。そのためあらかじめStreamWriterの変数swを作成しておいて戻り値をこのswに保存する。 そして、作成し終わったらその後書き込みができるように一旦ファイルを閉じておく(sw.Close)。 ファイルにテキストを保存する最後にファイルにテキストを保存する処理を追加しよう。 Imports System.IO
Public Class editForm
Private Sub saveMenu_Click(ByVal sender As System.Object, …
Dim filepath As String
filepath = "\My Documents\MyDiary\"
filepath = filepath + Me.editDate.Value.ToString("yyyy年MM月dd日")
filepath = filepath + ".txt"
If File.Exists(filepath) = False Then
Dim sw As StreamWriter
sw = File.CreateText(filepath)
sw.Close()
End If
Using sw As New StreamWriter( _
filepath, _
False, _
System.Text.Encoding.GetEncoding("Shift-JIS") _
)
sw.WriteLine(Me.titleText.Text)
sw.WriteLine(Me.contentText.Text)
sw.Close()
End Using
End Sub
End Class
StreamWriterはファイルを保存するためのオブジェクトである。1つめの引数は保存するファイルパス、2つめの引数はTrueの場合はファイルの追加、Falseの場合はファイルの新規保存になる。3つめの引数はテキストのエンコード方式をしてする。今回はShift-JISで保存する。 そして、StreamWriterのWriteLine関数を使って1行ずつ文字列を保存する。WriteLine関数を使うと1行保存するごとに、改行を自動的に追加してくれる。はじめにタイトルの文字列(titleText.Text)、続けて本文の文字列(contentText.Text)を追加している。 テキスト内容の保存が済んだら、ファイルをクローズするのを忘れないようにしよう。 実行してみるF5キーを押して実行し、エミュレータでテストしてみよう。一覧画面が表示されたら、「メニュー」の「編集」を選択して入力画面を表示する。 DateTimePickerで適当な日付を選択して、タイトルと本文に適当な内容を入力しよう。入力が完了したら左ソフトキーの「保存」メニューを押して日記を保存しよう。数秒たっても反応がなければ保存が完了しているはずだから一度アプリケーションを終了して、もう一度起動してみよう。 今度は保存されたファイルがリストに追加されているはずだ。 さて、現在のままだと保存後きちんとファイルが保存されたかどうかわからない。ファイルが保存されればこの画面には用事がないのでこの画面を閉じてしまおう。 Private Sub saveMenu_Click(ByVal sender As System.Object, …
:
sw.Close()
End Using
Me.Close()
End Sub
これで保存完了後、入力画面が閉じる。これは「OK」ボタンを押したのと同じであるため、この後は一覧画面に戻る。 ファイル読み込み機能の追加さて、DateTimePickerで日付を変更した際に、もしすでに保存してある日記があったらその日記を読み込みたいところだ。ここではそんな機能を追加してみよう。 まず、「editForm」のデザイン画面を表示する。そしてDateTimePickerコントロール(editDate)をダブルクリックする。ここで作成されるイベントはDateTimePickerが変更された場合の処理になる。 日付が変更されたら以下の処理を行っていく。
読み込むファイルパスの作成まずは読み込むファイルパスを取得するコードを実装しよう。 Private Sub editDate_ValueChanged(ByVal sender As System.Object, …
' textBox のクリア
Me.titleText.Text = ""
Me.contentText.Text = ""
'ファイルパスの取得
Dim filepath As String
filepath = "\My Documents\MyDiary\"
filepath = filepath + Me.editDate.Value.ToString("yyyy年MM月dd日")
filepath = filepath + ".txt"
End Sub
はじめに内容を書き換える前にテキストボックスのクリア処理をしておく。ファイルがあった場合にはここに追加していき、なかった場合にはクリアのまま入力待ちとなる。 あとは見てのとおり、ファイルを書き込むときのコードと違いはない。同じ処理を2箇所に分けているのもしょうがないので後でまとめることにしよう。 ちなみに「’」で始まっている分は注釈文であり処理とはまったく関係がない。プログラムにコメントをつけるために使うものである。きちんと入れておくと後でプログラムをチェックしやすくなるのでこまめに入れておこう。 ファイルのチェック続けてファイルチェックのためのプログラムを実装する。 Private Sub editDate_ValueChanged(ByVal sender As System.Object, …
' textBox のクリア
Me.titleText.Text = ""
Me.contentText.Text = ""
'ファイルパスの取得
Dim filepath As String
filepath = "\My Documents\MyDiary\"
filepath = filepath + Me.editDate.Value.ToString("yyyy年MM月dd日")
filepath = filepath + ".txt"
'ファイルの有無のチェック
If File.Exists(filepath) Then
End If
End Sub
ここも保存処理と同じである。条件文に「=True/False」 がないが、これは「=True」を省略したものである(If文とは本来条件がTrueかどうかをチェックする構文だからである)。 ファイルの読み込みでは肝心のファイルを読み込むコードを実装しよう。 Private Sub editDate_ValueChanged(ByVal sender As System.Object, …
:
'ファイルの有無のチェック
If File.Exists(filepath) Then
' 読み込みのためにファイルを開く
Using sr As New StreamReader( _
filepath, _
System.Text.Encoding.GetEncoding("Shift-JIS") _
)
' テキスト読み込み
Me.titleText.Text = sr.ReadLine()
Me.contentText.Text = sr.ReadToEnd()
End Using
End If
End Sub
まず、ファイルを(読み込むために)開くためにStreamReaderオブジェクトを作成する。引数はファイルパスとエンコード形式しかない。ここでエンコード形式を間違えると文字化けを起こしてしまうので注意しよう。 そして、StreamReaderのReadLine関数でファイルから1行読み込む。このあたりもファイルの書き込みと同じような感じである。違いがあるのは本文の読み込みだ。本文は複数行ある可能性がある。そこで、ReadToEnd関数で最終行までまとめて読み込み、TextBoxに格納する。 読み込みテストをしてみようそれではテストをしてみよう。F5キーを押して実行してみる。「メニュー」から「編集」を選択して入力画面を表示する。 これはDateTimePickerの日付を変更することで、実装したファイルを読み込む機能が実行されていることがわかる。もちろん、日付をテストファイルの2006年1月1日に変更すれば、すでに保存されているテストファイルの内容を表示する。 まとめ保存機能と読み込み機能が追加されてアプリケーションとしてはかなり使いやすくなった。しかし現在のままでは、一覧画面から選んだ日記を表示するといったように、一覧画面と入力画面の連携ができない。 そこで次回は一覧画面で選択した内容を入力画面に引き継ぐ方法について考えてみよう。 <執筆者プロフィール>高橋 忍
<書籍情報>Windows Mobile 5.0のアプリケーション開発について、もっと詳しく知りたくなったら ![]() Windows Mobile 5.0 アプリケーション開発 Beginner's Book 高橋 忍・著/280ページ/2色印刷/B5変形/CD-ROM付
This article
posted by staff
on 2006/10/12 11:26
Track back URLhttp://www.willcom-fan.com/adm/mt-tb.cgi/152 Track backs: |
最近の記事【新機種レビュー】WILLCOM 03から新色「ブラックトーン」が登場! その注目ポイントは?タッチパネル対応の画面。横スライド式のQWERTYキー... 【新機種レビュー】カメラが付いた! ポップ&カジュアルなデザインの音声端末/HONEY BEE 2(WX331KC) ウィルコムが“ミツバチ”をイメージしたポップ&カジュア... スライド、ラメ、防水 ― ウィルコムから個性的な新音声端末が続々登場! 2008年10月28日、ウィルコムから音声端末3製品と... 手描きチャットで応募するイラストコンテスト開催! 10月28日に発表されたウィルコムの新端末。それと同時に紹介された新サービス... 音楽を2倍、2倍のキャンペーン 「カメラを買うと、ポケットカメラが付いてくる」 そんな通販番組が昔あったが、... 最近のトラックバック携帯可能な無線LANアクセスポイント「どこでもWi-Fi」from あろーい日記 http://www.wi WILLCOM D4に大容量バッテリーで。 from プチ株とPDA・PCと。 WILLCOM D4に大容 アカデミックパックとくまふぉんと。 from プチ株とPDA・PCと。 WILLCOM 03につい [W-ZERO3]辛口連発!? WILLCOM 03、WILLCOM D4を本サイトライター陣が評価 ウィルコムに期待することとは?/座談会 - 後編 from Kzou’s Diary (^^ゞ 当サイトのライター陣で行 「新つなぎ放題プラン」 from ねこもばGadget! β版 へっぽこ実験ニュースサイト - WILLCOM 03応援中!! 【料金プラン】音声端末で「 このサイトについてウィルコムFANは、ウィルコム携帯端末の活用情報を提供するサイトとして株式会社アスキー(現アスキー・メディアワークス)が2006年3月15日より運営しています。続きを読む... |